在Rails 3.2.11,我有以下路由定义获得Rails的嵌套资源路由到正确的嵌套控制器
resources :foos do
resources :bars
resources :bangs, :controller => 'foos/bangs'
end
这导致以下路线
foo_bars GET /foos/:foo_id/bars(.:format) bars#index
POST /foos/:foo_id/bars(.:format) bars#create
new_foo_bar GET /foos/:foo_id/bars/new(.:format) bars#new
edit_foo_bar GET /foos/:foo_id/bars/:id/edit(.:format) bars#edit
foo_bar GET /foos/:foo_id/bars/:id(.:format) bars#show
PUT /foos/:foo_id/bars/:id(.:format) bars#update
DELETE /foos/:foo_id/bars/:id(.:format) bars#destroy
foo_bangs GET /foos/:foo_id/bangs(.:format) foos/bangs#index
POST /foos/:foo_id/bangs(.:format) foos/bangs#create
new_foo_bang GET /foos/:foo_id/bangs/new(.:format) foos/bangs#new
edit_foo_bang GET /foos/:foo_id/bangs/:id/edit(.:format) foos/bangs#edit
foo_bang GET /foos/:foo_id/bangs/:id(.:format) foos/bangs#show
PUT /foos/:foo_id/bangs/:id(.:format) foos/bangs#update
DELETE /foos/:foo_id/bangs/:id(.:format) foos/bangs#destroy
foos GET /foos(.:format) foos#index
POST /foos(.:format) foos#create
new_foo GET /foos/new(.:format) foos#new
edit_foo GET /foos/:id/edit(.:format) foos#edit
foo GET /foos/:id(.:format) foos#show
PUT /foos/:id(.:format) foos#update
DELETE /foos/:id(.:format) foos#destroy
的路径是正确的,但控制器路由只适用于resources :bangs
。 resources :bars
应该路由到foos/bars
控制器而不是bars
控制器。
它曾经是我可以在foos/
内设置名称空间控制器来处理嵌套资源。
#app/controllers/foos/bars_controller.rb
class Foos::BarsController < ApplicationController
#/foos/:foo_id/bar/:id available here
end
但是,这似乎不再是这种情况。这种行为何时发生变化,以及如何在Rails 3.2.11中获得相同的功能?
编辑:我意识到resources :bangs
结果在正确的控制器映射,但我希望能够隐式做到这一点。如果我在:foos
内有多个嵌套资源,我不想为每个资源定义控制器。
是的,这是做到这一点的方法。我忘了我还有这个问题。 – CITguy
我想其他人可能仍然会发现你的问题相关。 –
@PhillSparks,你可以看看这个问题吗?这几乎是一样的,但我无法弄清楚。 http://stackoverflow.com/questions/35672666/rails-structuring-routes-controller-views-for-nested-resources –