我遷移從一個代碼庫到另一個項目,清理了大量積累的克魯夫特,轉移到一個新的表示層等「的ActionController :: RoutingError:沒有路由匹配」時,沒有嵌套資源
錯誤的關係之一是規範的User has_many Order
,這是我在routes.rb
表示爲嵌套的資源:
resources :users do
resources :orders
end
,所以我有指定的路線user_orders_path(@user)
。它的工作原理,如果用戶有訂單就好了,但是如果用戶沒有訂單,試圖呈現的路線提供了以下錯誤:
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,我有點懷疑它可能在這裏扮演一個角色,但是我沒有將它剝離並且沒有測試它,在這種不正確的行爲沒有任何變化。)