1

프로젝트에 속한 일정이라는 모델이 있습니다. 프로젝트 has_one 일정. 나는 CRUD 협약을 따르려하지만 약간의 어려움을 겪고 있습니다. 모든 프로젝트를 나열하고 각 프로젝트 옆에 스케줄을 작성하는 링크가있는 페이지가 있습니다. 내 경로 파일에서 다음과 함께 시작했습니다.rails routes with : id not working

resources :schedules 

여기에 문제가 있습니다. '새 일정'페이지의 URL에는 일정이 속한 프로젝트를 나타내는 id가 있어야합니다. 일정이 만들어지면 적절한 프로젝트에 속하게됩니다. 나는 자원, 그래서 내 경로 코드를 변경하는 것이 할 수있는 방법을 알고하지 않습니다 어떤 이유

match 'schedules/new/:id', to: 'schedules#new', as: :new_schedule, via: [:get, :post] 
resources :schedules, except: [:new, :create] 

는이 페이지가 비어 있습니다. 그냥 흰색이에요. 내 경로를 수정하려면 어떻게해야합니까? 감사.

UPDATE :이 생각

/projects/:project_id/schedules/new(.:format) 

:이 형태의 새로운 일정에 대한 URL을 만드는

resources :projects do 
    resources :schedules 
end 

: 나는 또한 다음에 내 경로를 변경 시도

어떻게해야 하는가? 그러나 새로운 일정을위한 양식은

form_for @schedule 

하고 다음과 같은 오류 발생 :

undefined method `schedules_path' 

어떤 아이디어?

답변

2

보기 당신의 form_for에 객체) :

form_for [@project, @schedule] 

설정 설명 :

schedules#new 컨트롤러 동작이 RESTful이므로 does not accept an id parameter이므로 명명 된 일치하는 경로 (즉, match 'schedules/new/:id')가 라우팅되지 않습니다. 그러나 업데이트에서 경로를 올바르게 수정했습니다. 프로젝트/일정 간의 부모 - 자식 연관은 실제로 경로를 중첩하여 나타내야합니다.

결과 경로 - /projects/:project_id/schedules/new - 개체 배열을 form_for 도우미로 전달해야합니다. 첫 번째 요소는 기존 Project 개체 여야하므로 (:project_id 매개 변수를 충족) 두 번째 매개 변수는 새 Schedule 개체 여야합니다 (정의 상으로는 id 특성이 할당되지 않음).

+0

감사합니다. 그것은 거의 그것을 고쳤다. 그러나 어떤 이유로 그것은 구원을 얻지 못할 것입니다. 그것은 양식을 제출할 때 그것은 나에게 다음과 같은 오류를 준다 : '알 수없는 속성'schedule_id'쓸 수 없습니다. – Philip7899

+0

이 오류는 어떤 행에 있습니까? 컨트롤러 코드/스택 추적을 포함하도록 질문을 업데이트하십시오. – zeantsoi

+0

스택 오버플로에서받은 가장 빠르고 유용한 조언 중 일부. 엄청 고마워! – Philip7899

0

당신이 사용자 정의보기를 사용하는 경우, 당신은 둥지 그런 식으로 자원이 모든 일정 방법 헬퍼와 선행 될 필요가있는 경우 등은 shedules/get, 당신은 config/routes.rb 파일

0

에 라인을 get "shedules/get"을 추가해야합니다 프로젝트 또는 프로젝트. 예 : 프로젝트 _schedules_path. 그래서 그 오류가 발생합니다. 잘못된 경로 도우미를 사용하는 링크가 있습니다.

는 중첩 된 자원/경로를 가지고 있기 때문에, 당신은 @project 인스턴스 변수와 함께 @schedule 인스턴스 변수 (새로운 Schedule을 잡고 개체)를 모두 포함하는 배열 (부모 Project을 들고 통과해야 http://guides.rubyonrails.org/routing.html#creating-paths-and-urls-from-objects