我知道這是一個新手問題,但我沒有看到解釋,我想要一個。混淆路由錯誤
究竟是什麼意思時,Rails的發出路由錯誤是這樣的:
Routing Error
No route matches {:action=>"show", :controller=>"library_imports", :library_id=>#<Library id: 1, ...
令我百思不解的是,消息本身就說明了我的請求被路由到library_imports
控制器的show
作用。如果請求URL與任何路由不匹配,情況如何?
爲了完整起見,網址我打的結果此錯誤是:
http://localhost:3000/libraries/2/library_imports
這應該地圖的「指數」行動,而不是「作秀」。
的config/routes.rb
相關部分是:
Import::Application.routes.draw do
resources :libraries do
resources :library_imports
end
而且rake routes
輸出的相關部分是:
library_library_imports GET /libraries/:library_id/library_imports(.:format) {:action=>"index", :controller=>"library_imports"}
POST /libraries/:library_id/library_imports(.:format) {:action=>"create", :controller=>"library_imports"}
new_library_library_import GET /libraries/:library_id/library_imports/new(.:format) {:action=>"new", :controller=>"library_imports"}
edit_library_library_import GET /libraries/:library_id/library_imports/:id/edit(.:format) {:action=>"edit", :controller=>"library_imports"}
library_library_import GET /libraries/:library_id/library_imports/:id(.:format) {:action=>"show", :controller=>"library_imports"}
PUT /libraries/:library_id/library_imports/:id(.:format) {:action=>"update", :controller=>"library_imports"}
DELETE /libraries/:library_id/library_imports/:id(.:format) {:action=>"destroy", :controller=>"library_imports"}
你可以把你試圖命中的實際路線和routes.rb文件的相關位?過去我曾經看到,當我嘗試使用破碎的路線時,節目似乎是成員路線的默認路線。有時候我得到的一件事是錯誤地使用GET/POST/PUT ...意味着它是一個GET,我錯誤地嘗試使用POST。 – jaydel
我會給我的問題添加一些細節,但我所尋找的答案比這個特定的實例更一般:即一般Rails如何從URL中確定一個動作和一個控制器,同時說它不能路由請求? –
我經常在這些案例中看到show action爲默認路由,但我不知道爲什麼會在某些情況下發生,而不是在其他情況下發生。對不起,我不能對此更有幫助... – jaydel