2011-05-31 12 views
5

मैं नामस्थान, खाते के तहत कुछ मार्गों को घोंसला करने की कोशिश कर रहा हूं।रेल नामित मार्ग विकास में काम करते हैं लेकिन उत्पादन नहीं

मैं /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 

मेरे नियंत्रकों namespaced नहीं कर रहे हैं या उन्हें किसी भी अलग निर्देशिका में डाल दिया।

/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"} 

यह देखते हुए कि मार्गों /account उपनिर्देशिका में Users नियंत्रक देखने के लिए लगता है, मैं अपने सवाल लगता है क्यों करता है विकास में इस काम करता है?

उत्पादन है:

  • रेल 3.0.7
  • यात्री
  • अपाचे

विकास है:

  • रेल 3.0.7
  • Mongre एल

इस पर आपके विचारों के लिए धन्यवाद।

+0

आप लिख रहे हैं "मैं'/व्यवस्थापक/users' ... रास्तों में से किसी को 404 प्रतिक्रियाएं प्राप्त "। क्या आपका मतलब '/ accounts/users' है? – htanata

+1

आप बिल्कुल सही हैं - टाइपो वहाँ। मैंने अपनी पोस्ट संपादित की है। धन्यवाद। – doctororange

उत्तर

5

यदि आप इस तरह नाम दे रहे हैं, तो रेल को नियंत्रकों को उनके सही पथ, जैसे कि app/controllers/account/users_controller.rb पर होना आवश्यक है। यदि आप ऐसा करना नहीं चाहते हैं, तो scope बजाय का उपयोग करें:

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

मुद्दा यह है कि विकास में यह वास्तव में उचित पथ में एक उचित नामित नियंत्रक की अनुपस्थिति में मुख्य पथ में नियंत्रक का उपयोग करेगा। भ्रमित करने की तरह। –

+0

उम ... यही कारण है कि मैंने कहा कि आप नामस्थान का उपयोग कर सकते हैं यदि आप चाहते हैं कि वे एक विशिष्ट पथ पर हों, या यदि नहीं हो। –

संबंधित मुद्दे