【问题标题】:Does map.namespace falls back in case if there is no matching controller?如果没有匹配的控制器,map.namespace 是否会回退?
【发布时间】:2009-07-09 19:29:38
【问题描述】:

今天我在我的 rails 应用程序中观察到一种特殊的行为。

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

map.namespace :admin do |admin|
 admin.resources :users
end

当我使用 rake:routes 时,我按预期看到了以下路由:

admin_users GET /admin/users {:action => 'index, :controller => 'admin/users'}
....
....

就 path_prefixes 和 name_prefixes 而言,它们都是完美的命名空间。

我在 app/controllers 下(不在 app/controllers/admin 下)有 UsersController,但不知何故,rails 在 app/controllers 而不是 app/controllers/admin 下拾取 UsersController,这是 rails 的最新变化吗?当它找不到控制器时,它会退回到控制器?

【问题讨论】:

  • 你能展示一个页面中生成的实际url的例子吗?

标签: ruby-on-rails routing


【解决方案1】:

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

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

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

【讨论】:

  • @Dave:感谢您的反馈。实际上我不久前删除了那些默认路由。即使在使用默认路由的情况下,admin/users/:id 也会使用 UsersController 而不是 Admin::UsersController 来选择。我不明白为什么 rails 选择了错误的控制器。
猜你喜欢
  • 2011-05-11
  • 1970-01-01
  • 2018-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多