rails嵌套命名空间,具有到不同控制器的根路径

时间:2011-11-30 01:19:55

标签: ruby-on-rails-3.1 ruby-on-rails-2

在rails 3.1.1中,我在routes.rb中将admin_root_path设置为:

namespace :admin do
  root :to => "base#index"
  resources :users
end

admin / base_controller上指向索引操作的路由。 但由于我无法控制的原因,我必须将我的rails 3 app降级到v2.3.14。 我试过了:

map.namespace :admin do |admin|
  admin.resources :users, :controller => "base", :action => "index"
end
没有运气。我知道问一个“让我的新代码老了”的问题很奇怪,但是到底是什么。我猜这就是为什么我不是老板?

谢谢, 克里斯

1 个答案:

答案 0 :(得分:1)

据我所知,你有两个选择:

map.namespace :admin do |admin|
  admin.root :controller => "base"
  admin.resources :users, :controller => "users", :action => "index"
end

以上内容将为您提供与Rails 3相同的admin_root_path,但无法使用多种格式。 rake routes将其显示为:

admin_root   /admin   { :controller => "admin/base", :action => "index" }

如果您希望以与Rails 3中相同的方式使用多种格式,那么我认为这是您唯一的解决方案:

map.admin_root "/admin(.:format)", :controller => "admin/base", :action => "index"

map.namespace :admin do |admin|
  admin.resources :users, :controller => "users", :action => "index"
end

以上为Rails 2.3.14中的admin_root_path提供了这一点,这与我在Rails 3.0.11中看到的完全相同:

admin_root   /admin(.:format)   { :controller => "admin/base", :action=>"index" }