저는이 문제가 사용자의 중첩 경로로 정의 된 주소 경로를 얻는 방법이라고 생각합니다. 특히, rails documentation에 상태 :
그 레코드에 대한 명명 된 경로를 트리거하는 대신 옵션 매개 변수로 해시 (액티브 레코드 또는 Active 자원 등의) 기록을 전달. 조회는 클래스 이름에서 수행됩니다. 따라서 Workshop 객체를 전달하면 workshop_path 경로가 사용됩니다. admin_workshop_path와 같이 중첩 된 경로가있는 경우이를 명시 적으로 호출해야합니다 (url_for가 해당 경로를 추측하는 것은 불가능합니다).
즉, 참조되는 경로가 중첩 된 경로로 정의되어 있기 때문에 레일스는 경로를 추측 할 수 없습니다. 주소는 사용자 내부에 중첩되어 있기 때문에 특정 주소에있을 때 사용자를 추측 할 수 있지만 사용자 수준에서는 주소를 추측 할 수 없습니다.
또한 '일대 다'사용자 대 주소 관계 일 가능성이 있습니까? 이 경우 귀하의 resource
은 경로 파일에 resources
(복수형) 일 필요가 있습니다.
user_addresses POST /user/:user_id/addresses(.:format) {:action=>"create", :controller=>"addresses"}
new_user_addresses GET /user/:user_id/addresses/new(.:format) {:action=>"new", :controller=>"addresses"}
edit_user_addresses GET /user/:user_id/addresses/edit(.:format) {:action=>"edit", :controller=>"addresses"}
GET /user/:user_id/addresses(.:format) {:action=>"show", :controller=>"addresses"}
PUT /user/:user_id/addresses(.:format) {:action=>"update", :controller=>"addresses"}
DELETE /user/:user_id/addresses(.:format) {:action=>"destroy", :controller=>"addresses"}
하지만,
resources :user do
resources :addresses
end
당신에게 제공합니다 : (복수의) 두 번째 옵션은 수 있도록 당신에게 경로를 제공한다는
POST /user/:user_id/addresses(.:format) {:action=>"create", :controller=>"addresses"}
new_user_address GET /user/:user_id/addresses/new(.:format) {:action=>"new", :controller=>"addresses"}
edit_user_address GET /user/:user_id/addresses/:id/edit(.:format) {:action=>"edit", :controller=>"addresses"}
user_address GET /user/:user_id/addresses/:id(.:format) {:action=>"show", :controller=>"addresses"}
PUT /user/:user_id/addresses/:id(.:format) {:action=>"update", :controller=>"addresses"}
DELETE /user/:user_id/addresses/:id(.:format) {:action=>"destroy", :controller=>"addresses"}
공지 사항을
resources :user do
resource :addresses
end
당신에게 제공 각 사용자에 대해 여러 주소를 지정하는 반면, t 그는 단 하나 노선 만 당신에게 단 하나 주소를 준다.
오류가 있습니까? '@ user'는'nil'입니까? – Zabba
물론 아니야. 오류는 컨트롤러 주소와 일치 할 수 없습니다. 하지만 그 곳을 제외한 모든 곳에서 작동합니다. – castiel
이것은 이전에 보았던 것과 정확히 유사하지는 않지만 라우트 파일에서'addresses'를 복수화했는데 설정이 단일 파일로되어 있다는 사실에 문제가 있는지 궁금합니다. 의지. 당신이 설정하고있는 조건부 행동을 실제로 설명하지는 않습니다. – MrDanA