我正在尝试在名称空间account下嵌套一些路由。
我想要像/account/users
和/account/users/5/edit
这样的帐户下的用户管理
在路线上。rb:
namespace :account do
resources :users do
member do
put 'generate_api_key'
end
collection do
post 'api_key'
end
end
end
我的控制器没有命名空间,也没有将它们放在任何不同的目录中。
/app
/controllers
accounts_controller.rb
users_controller.rb
在我的开发环境中,这很好,但在生产中,我对任何/account/users...
路径都得到了404个响应(顺便说一句,这些路径仍然正确生成:new_account_users_path
、edit_account_user_path
等)。
CCD_ 6在两种环境中产生相同的输出。这是相关的比特:
generate_api_key_account_user PUT /account/users/:id/generate_api_key(.:format) {:action=>"generate_api_key", :controller=>"account/users"}
api_key_account_users POST /account/users/api_key(.:format) {:action=>"api_key", :controller=>"account/users"}
account_users GET /account/users(.:format) {:action=>"index", :controller=>"account/users"}
POST /account/users(.:format) {:action=>"create", :controller=>"account/users"}
new_account_user GET /account/users/new(.:format) {:action=>"new", :controller=>"account/users"}
edit_account_user GET /account/users/:id/edit(.:format) {:action=>"edit", :controller=>"account/users"}
account_user GET /account/users/:id(.:format) {:action=>"show", :controller=>"account/users"}
PUT /account/users/:id(.:format) {:action=>"update", :controller=>"account/users"}
DELETE /account/users/:id(.:format) {:action=>"destroy", :controller=>"account/users"}
考虑到路由似乎在/account
子目录中查找Users
控制器,我想我的问题是为什么这在开发中有效?
产量为:
- 轨道3.0.7
- 乘客
- Apache
发展是:
- 轨道3.0.7
- Mongrel
谢谢你对这个的思考。
如果您这样命名,Rails要求控制器位于其正确的路径,例如app/controllers/account/users_controller.rb
。如果你不想这样做,那么用scope
代替:
scope :path => "account" do
resources :users
end