간단한 Rails4 응용 프로그램을 만들려고합니다. 나는 가지고있다 사용자 Devise GEM, 시험 모형 및 에 의해 생성되는 모형 참가 모형은 발판 발전기에 의해 생성된다. 나는 사용자가 시험에 등록 할 수 있도록 구조를 만들고 싶습니다 지금중첩 된 경로 및 많은 관계가있는 양식
class Examination < ActiveRecord::Base
has_many :participations
has_many :users, :through => :participations
end
class Participation < ActiveRecord::Base
belongs_to :user
belongs_to :examination
end
class User < ActiveRecord::Base
has_many :participations
has_many :examinations, :through => :participations
end
:
이들은
내 모델입니다. 인덱스 페이지 시험 (app/views/examinations/index.html.erb) 각 시험의 기본 표시, 편집 및 삭제 버튼 바로 옆에 '등록'버튼을 추가하고 싶습니다. 사용자가 "시험 등록" 버튼을 클릭하면 시험 언어 우선 설정을 선택한 다음 등록을 제출할 수있는 페이지를보고 싶습니다.또한 사용자가 시험에 한 번만 등록 할 수 있기를 원합니다. 그들은 많은 시험에 등록 할 수 있지만 각 시험마다 1 회만 등록 할 수 있어야합니다.
어떻게 이런 종류의 구조를 만들 수 있습니까? 중첩 된 리소스를 사용할 때 모든 양식에서 오류가 발생합니다.
** 양식 : ** <% = form_for @participation, : : 참여, url : new_examination_participation_path (@participation, @examination) do | f | %> <% = f.hidden : examination_id %> <% = f.select : language_preference, options_for_select ([ "A", "B"]) %> <% = f.submit : 등록 %> <% end %> ' ** 오류 : ** 'ActionController :: UrlGenerationError in Participations # new 일치하는 경로가 없습니다 : : action => "new", : controller => "participations", : examination_id => # <참여 ID : nil, user_id : nil, examination_id : nil, language_preference : nil} 필수 키 누락 : [: examination_id] ' – msdundar
죄송합니다. 일찍 생각하지 않았습니다. 그냥 new_examination_participation_path (@examination)이어야합니다. 나는 "시험"보다는 짧은 "시험"을 사용하여 내 대답을 썼으며 잘못된 경로를 작성했습니다 – jay
@msdundar 당신은 여전히 같은 오류를 얻고 있습니까? 아니면 업데이트 된 답변이 도움이됩니까? – jay