Ruby on rails 如果没有匹配的控制器,map.namespace是否会后退?

Ruby on rails 如果没有匹配的控制器,map.namespace是否会后退?,ruby-on-rails,routing,Ruby On Rails,Routing,今天,我在我的rails应用程序中观察到一个奇怪的行为 我在routes.rb中定义了以下路由 map.namespace :admin do |admin| admin.resources :users end 当我使用rake:routes时,我看到了如下预期的路由: admin_users GET /admin/users {:action => 'index, :controller => 'admin/users'} .... .... 在路径前缀和名称前缀方面都是完

今天,我在我的rails应用程序中观察到一个奇怪的行为

我在routes.rb中定义了以下路由

map.namespace :admin do |admin|
 admin.resources :users
end
当我使用rake:routes时,我看到了如下预期的路由:

admin_users GET /admin/users {:action => 'index, :controller => 'admin/users'}
....
....
在路径前缀和名称前缀方面都是完全命名的


我在app/controllers下有UsersController(不是在app/controllers/admin下),但不知怎么的,rails在app/controllers下而不是在app/controllers/admin下选择了UsersController,这是rails最近的一个变化吗,当它找不到时?

它可能会被routes.rb底部包含的默认路由拾取

  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'

出于您的目的,听起来删除这些可能是个好主意。

@Dave:谢谢您的反馈。实际上,我刚才删除了那些默认路由。即使有了默认路由,admin/users/:id也会使用userscoontroller而不是admin::userscoontroller进行选择。我不明白为什么rails选择了错误的控制器。你能给出一个在页面中生成的实际url的例子吗?