ruby-on-rails - Rails 命名空间路由在开发中有效,但在生产中无效

标签 ruby-on-rails namespaces routes production-environment

我正在尝试在命名空间 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_pathedit_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 3.0.7
  • 客运
  • Apache

  • 发展是:
  • rails 3.0.7
  • 杂种

  • 感谢您对此的想法。

    最佳答案

    如果您像这样命名空间,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/

    相关文章:

    ruby-on-rails - 使用复选框过滤列表

    ruby-on-rails - 带有命名空间 rails 3.1 的 URL 路由中的点

    ruby-on-rails - 如何在 Rails 中指定 block 内的路由成员?

    ruby-on-rails - rails : How to display certain characters and dismiss the rest?

    ruby-on-rails - friendly_id 在创建新用户时出现错误

    ruby-on-rails - 如何在协作环境中处理 bundle 程序更新(Gemfile.lock)?

    javascript - javascript中的命名空间标准

    php - 在包含的文件中使用 PHP 命名空间

    Python:从 python 命名空间/包导入所有内容

    ruby-on-rails - Rails 路由中的shallow_path 有什么作用?