我正在尝试在命名空间 account 下嵌套一些路由。
我想在像 /account/users
这样的帐户下进行用户管理和 /account/users/5/edit
在routes.rb:
namespace :account do
resources :users do
member do
put 'generate_api_key'
end
collection do
post 'api_key'
end
end
end
我的 Controller 没有命名空间或将它们放在任何不同的目录中。
/app
/controllers
accounts_controller.rb
users_controller.rb
在我的开发环境中,这工作正常,但是 在生产中,我收到了对
/account/users...
中的任何一个的 404 响应路径 (顺便说一下,它们仍然正确生成: new_account_users_path
、 edit_account_user_path
等)。rake routes
在两种环境中生成相同的输出。这是相关的位: 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"}
鉴于路线似乎在寻找
Users
/account
中的 Controller 子目录,我想我的问题是为什么这在开发中起作用?生产是:
发展是:
感谢您对此的想法。
最佳答案
如果您像这样命名空间,Rails 要求 Controller 位于正确的路径上,例如 app/controllers/account/users_controller.rb
.如果您不想这样做,请使用 scope
反而:
scope :path => "account" do
resources :users
end
关于ruby-on-rails - Rails 命名空间路由在开发中有效,但在生产中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6182700/