我知道这是一个新手问题,但我没有看到解释,我想要一个。混淆路由错误
究竟是什么意思时,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