Moh*_*mad 2 ruby routing namespaces ruby-on-rails
我有一个管理员命名空间:
namespace :admin do
resources :users
resources :base
end
Run Code Online (Sandbox Code Playgroud)
使用以下目录结构:
/app/controllers/
+ admin
- base_controller.rb
- users_controller.rb
- users_controller.rb
- application_controller.rb
Run Code Online (Sandbox Code Playgroud)
我必须包装admin/users_conroller.rb一个module Admin end,否则我得到一个Uninitialized constant BaseController错误:
class Admin::BaseController < ApplicationController
end
# Works fine
module Admin
class UsersController < BaseController
end
end
# Breaks with error
class Admin::UsersController < BaseController
end
Run Code Online (Sandbox Code Playgroud)
知道为什么会这样吗?使用Rails 3.2.
命名空间映射到目录,下划线的文件名是为类名提供的.
class Some::DeeplyNested::BaseActionsController < ApplicationController
Run Code Online (Sandbox Code Playgroud)
需要app/controllers/some/deeply_nested/base_actions_controller.rb让铁路找到它.
在你的代码中,没有app/controllers/base_controller.rb,所以BaseController在
class Admin::UsersController < BaseController
Run Code Online (Sandbox Code Playgroud)
指出没有Rails知道的类.你需要给它管理命名空间(因为你的BaseController的类定义也有)
class Admin::UsersController < Admin::BaseController
end
Run Code Online (Sandbox Code Playgroud)
以上和您的问题中的工作代码是同一个
module Admin
class UsersController < BaseController
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2009 次 |
| 最近记录: |