2011-05-31 62 views
5

我試圖在命名空間,帳戶下嵌套一些路線。Rails命名空間的路線工作在開發中,但沒有生產

我要像/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 

我的控制器都沒有命名空間或把他們在任何不同的目錄。

/app 
    /controllers 
    accounts_controller.rb 
    users_controller.rb 

在我的開發環境,這是工作正常,但在生產我得到404個響應任何/account/users...路徑(其中,順便說一句,都仍然正確生成: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"} 

鑑於路線似乎尋找在/account子目錄Users控制器,我想我的問題是爲什麼這項工作的發展?

生產是:

  • 的Rails 3.0.7
  • 客運
  • 阿帕奇

發展是:

  • 的Rails 3.0.7
  • Mongre l

感謝您對此問題的看法。

+0

你在寫「我得到404個響應任何'/ admin/users'路徑。你的意思是'/ accounts/users'? – htanata 2011-05-31 03:37:02

+1

你很對 - 錯別字。我編輯了我的帖子。謝謝。 – doctororange 2011-05-31 03:50:16

回答

5

如果你是這樣的命名空間,Rails要求控制器處於正確的路徑,例如app/controllers/account/users_controller.rb。如果你不想這樣做,那就用scope來代替:

scope :path => "account" do 
    resources :users 
end 
+2

問題是,在開發過程中,如果沒有正確命名的控制器在正確的路徑中,它實際上會在主路徑中使用控制器。有點混亂。 – 2013-01-28 20:15:44

+0

嗯......這就是爲什麼我說你可以使用命名空間,如果你希望他們在特定的路徑,或者如果不是的話。 – 2013-01-28 21:38:09

相關問題