가 나는 등 새로운 프리젠 테이션 계층으로 이동, 축적 된 cruft에 많이 정리하는 하나 개의 코드베이스에서 다른 프로젝트,는 : 중첩 된 자원
를 마이그레이션하지있어 오류 "ActionController :: RoutingError 없음 경로가 일치하지 않습니다"resources :users do
resources :orders
end
그래서 나는 명명 된 경로 user_orders_path(@user)
이 : 관계의
하나는 내가 routes.rb
에 중첩 자원으로 표명 한 정규 User has_many Order
입니다. 그것은 사용자가 주문이있는 경우 잘 작동하지만 사용자가 더 주문이없는 경우, 경로를 렌더링하려고하면 다음과 같은 오류를 제공합니다 :
ActionController::RoutingError (No route matches {:controller=>"orders",
:user_id=>#<User id: 472, account_id: nil, first_name: "Denis", last_name:
"Haskin", ...etc... , last_sign_in_ip: "127.0.0.1">})
from /Users/dwhsix/.rvm/gems/[email protected]/gems/actionpack-3.2.3/lib/action_dispatch/routing/route_set.rb:532:in `raise_routing_error'
from /Users/dwhsix/.rvm/gems/[email protected]/gems/actionpack-3.2.3/lib/action_dispatch/routing/route_set.rb:528:in `rescue in generate'
from /Users/dwhsix/.rvm/gems/[email protected]/gems/actionpack-3.2.3/lib/action_dispatch/routing/route_set.rb:520:in `generate'
from /Users/dwhsix/.rvm/gems/[email protected]/gems/actionpack-3.2.3/lib/action_dispatch/routing/route_set.rb:561:in `generate'
from /Users/dwhsix/.rvm/gems/[email protected]/gems/actionpack-3.2.3/lib/action_dispatch/routing/route_set.rb:586:in `url_for'
from /Users/dwhsix/.rvm/gems/[email protected]/gems/actionpack-3.2.3/lib/action_dispatch/routing/url_for.rb:148:in `url_for'
from /Users/dwhsix/.rvm/gems/[email protected]/gems/actionpack-3.2.3/lib/action_dispatch/routing/route_set.rb:213:in `user_orders_path'
from (irb):24
(나는 rails console
이 테스트에서 전체 스택 트레이스를 제공하고 있습니다; 어떤 이유로 서버 로그에서이 오류에 대한 전체 스택 추적을 얻지 못하고 있습니다.)
나는 이것을 설명하기 위해 손실에 가깝습니다. 어떤 사람. 나는 이것을 새로운 빈 프로젝트에서 테스트했고 물론 잘 동작한다. 나는 내가 시도 할 것 인 다음 물건이 내가이 모델과 컨트롤러에 관해서 가능한 한 많이 떼어 내고 에러가 다시 발생할 때까지 조각을 다시 시작하는 것이라고 생각한다. 기존 코드를 마이그레이션하기 때문에 이것을 작은 예제 코드로 분리하는 것은 매우 어렵습니다.
(이 문제를 혼동시킬 위험이 있으므로이 프로젝트에서 Ryan Bates의 cancan을 사용하기 시작했습니다.이 역할에 조금 의심 스럽지만 사용하지 말고 테스트 해 보았습니다. 이 잘못된 동작을 변경하지 않아도됩니다.)