6

रेल 3.2.11 में सही करने के लिए, मैं निम्नलिखित है मार्ग परिभाषाओंमार्ग रेल नेस्टेड संसाधन हो रही नेस्टेड नियंत्रकों

resources :foos do 
    resources :bars 
    resources :bangs, :controller => 'foos/bangs' 
end 

जो निम्नलिखित मार्गों में परिणाम

 foo_bars GET /foos/:foo_id/bars(.:format)   bars#index 
       POST /foos/:foo_id/bars(.:format)   bars#create 
    new_foo_bar GET /foos/:foo_id/bars/new(.:format)  bars#new 
edit_foo_bar GET /foos/:foo_id/bars/:id/edit(.:format) bars#edit 
     foo_bar GET /foos/:foo_id/bars/:id(.:format)  bars#show 
       PUT /foos/:foo_id/bars/:id(.:format)  bars#update 
       DELETE /foos/:foo_id/bars/:id(.:format)  bars#destroy 
    foo_bangs GET /foos/:foo_id/bangs(.:format)   foos/bangs#index 
       POST /foos/:foo_id/bangs(.:format)   foos/bangs#create 
new_foo_bang GET /foos/:foo_id/bangs/new(.:format)  foos/bangs#new 
edit_foo_bang GET /foos/:foo_id/bangs/:id/edit(.:format) foos/bangs#edit 
    foo_bang GET /foos/:foo_id/bangs/:id(.:format)  foos/bangs#show 
       PUT /foos/:foo_id/bangs/:id(.:format)  foos/bangs#update 
       DELETE /foos/:foo_id/bangs/:id(.:format)  foos/bangs#destroy 
     foos GET /foos(.:format)       foos#index 
       POST /foos(.:format)       foos#create 
     new_foo GET /foos/new(.:format)      foos#new 
    edit_foo GET /foos/:id/edit(.:format)    foos#edit 
      foo GET /foos/:id(.:format)      foos#show 
       PUT /foos/:id(.:format)      foos#update 
       DELETE /foos/:id(.:format)      foos#destroy 

पथ सभी सही हैं , लेकिन नियंत्रक रूटिंग केवल resources :bangs के लिए सही है। resources :barsbars नियंत्रक के बजाय foos/bars नियंत्रक तक पहुंच जाना चाहिए।

ऐसा लगता था कि मैं नेस्टेड संसाधन को संभालने के लिए foos/ के भीतर नामस्थान नियंत्रक स्थापित कर सकता था।

#app/controllers/foos/bars_controller.rb 

class Foos::BarsController < ApplicationController 
    #/foos/:foo_id/bar/:id available here 
end 

हालांकि यह अब और मामला प्रतीत नहीं होता है। यह व्यवहार कब बदल गया और मैं रेल 3.2.11 में समान कार्यक्षमता कैसे प्राप्त करूं?

संपादित करें: मुझे resources :bangs सही नियंत्रक मैपिंग में परिणाम का एहसास है, लेकिन मैं इसे पूर्ण रूप से करने में सक्षम होना चाहता हूं। अगर मेरे पास :foos के भीतर कई नेस्टेड संसाधन हैं, तो मैं प्रत्येक संसाधन के लिए नियंत्रक को परिभाषित नहीं करना चाहता हूं।

उत्तर

17

आप मॉड्यूल निर्दिष्ट करने के लिए एक दायरा जोड़ सकते हैं। रेल मानते हैं कि आपके घोंसले संसाधनों के नियंत्रक खुद को घोंसले नहीं करते हैं।

resources :foos do 
    scope module: :foos do 
     resources :bars 
     resources :bangs 
    end 
end 
+0

हाँ, यह करने का यह तरीका है। मैं भूल गया कि मेरे पास अभी भी यह प्रश्न था। – CITguy

+0

मुझे लगा कि कोई और अभी भी आपका प्रश्न प्रासंगिक पाया जा सकता है। –

+0

@PhillSparks, क्या आप इस मुद्दे पर एक नज़र डाल सकते हैं? यह लगभग वही है, लेकिन मैं इसे समझ नहीं सकता। http://stackoverflow.com/questions/35672666/rails-structuring-routes-controller-views-for-nested-resources –

1
resources :foos do 
    resources :bars, :controller -> 'foos/bars' 
    resources :bangs, :controller => 'foos/bangs' 
end 

क्या आपको इसकी आवश्यकता नहीं है?

+0

हां और नहीं। मैं ** ** ** को प्रत्येक संसाधन के लिए नियंत्रक निर्दिष्ट करना नहीं चाहता हूं। एक रेल 2.3 एप में, संसाधनों को घोंसला करना सही पथ और नियंत्रकों को मैप करने के लिए पर्याप्त था। – CITguy

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

  • कोई संबंधित समस्या नहीं^_^