我有多个资源(:countries, :states, :schools
等),但想要一个单一的"仪表板"控制器来处理所有的动作。
我希望能够做到以下几点:
countries_path
将引导我在DashboardController
中进行show_countries
操作,并由'/dashboard/countries
访问。
同样适用于州、学校等。
我已经阅读了Rails路由,并且已经在各种选项中搞砸了。我最终在我的routes.rb
文件中添加了以下内容:
scope "toolbox" do
resources :countries, :controller => "toolbox", :only => :index do
get 'show_countries', :on => :collection
end
...
end
运行rake routes
为上面的代码提供以下内容:
show_countries_countries GET /toolbox/countries/show_countries(.:format) {:action=>"show_countries", :controller=>"toolbox"}
countries GET /toolbox/countries(.:format) {:action=>"index", :controller=>"toolbox"}
我试过了:
scope "toolbox" do
resources :countries, :controller => "toolbox", :only => :index, :action => "show_countries"
end
只得到这个路由:
countries GET /toolbox/countries(.:format) {:action=>"index", :controller=>"toolbox"}
我真正想要的是:
countries GET /toolbox/countries(.:format) {:action=>"show_countries", :controller=>"toolbox"}
任何想法?
你只需要跳出"资源"的框框:
scope "toolbox", :controller => :toolbox do
get 'countries' => :show_countries
get 'states' => :show_states
get 'schools' => :show_shools
end
应该输出这样的路由:
countries GET /toolbox/countries(.:format) toolbox#show_countries