2012-05-19 13 views
7

मैं कई रेल पता डेवलपर्स का कहना है कि अपने संसाधनों से अधिक 2 स्तरों गहरी घोंसला बनाने से अधर्म है। मैं इसलिए भी कि यह गंदा हो जाता है जब आपके यूआरएल mysite.com/account/1/people/1/notes/1 तरह लग रहा है सहमत हैं। मैं नेस्टेड संसाधनों का उपयोग करने का एक तरीका खोजने की कोशिश कर रहा हूं लेकिन उन्हें 3 स्तरों के गहरे घोंसले के बिना।रेल 3 स्तर गहरी नेस्ट संसाधनों

इस रेल डेवलपर्स के बाद से यह कर इसकी सलाह नहीं देते के गलत तरीका है और यह भी कि यह कैसे करने के लिए घोंसला इस नियंत्रक या रूप को ध्यान में रखते पता लगाना बहुत मुश्किल है।

resources :account do 
    resources :people do 
    resources :notes 
    end 
end 

सही तरीका डेवलपर कहते हैं कि यह किया जाना चाहिए है, इसलिए

resources :account do 
    resources :people 
end 

resources :people do 
    resources :notes 
end 

यहाँ समस्या यह है कि मैं हमेशा में चलाने जैसे रेल। खाता/1/लोग कभी मैं यात्रा कर जब मैं खाते में एक व्यक्ति को जोड़ने और कहते हैं कि यूआरएल इसलिए mysite.com/account/1/people/1 की तरह है की सुविधा देता है और कहा कि ठीक काम करता है सकते हैं।

अब अगर मैं mysite.com/people/1/notes खाता 1 से मैं त्रुटि मिलती है तक पहुँचने का प्रयास

बिना लोगों और खाता id नहीं ढूंढ सकता

कैसे कर सकते हैं इसे ठीक से काम करने के लिए मिलता है?

उत्तर

10

आप घोंसला मार्गों के रूप में गहरी आप की तरह के रूप में के रूप में रेल 3.x आप उन्हें उथले का उपयोग कर समतल कर सकते हैं: सच

resources :account, shallow: true do 
    resources :people do 
    resources :notes 
    end 
end 

उपयोग रेक मार्गों के साथ प्रयोग कर आप क्या मिलता है यह देखने के लिए प्रयास करें:) जवाब में

अद्यतन टिप्पणी करने के लिए

जैसा कि मैंने कहा, क्या देखने के लिए रेक मार्गों के साथ खेलने के यू rl की आप

resources :account, shallow: true do 
    resources :people, shallow: true do 
    resources :notes 
    end 
end 

आप इन मार्गों

हो जाता है प्राप्त कर सकते हैं
:~/Development/rails/routing_test$ rake routes 
     person_notes GET /people/:person_id/notes(.:format)  notes#index 
        POST /people/:person_id/notes(.:format)  notes#create 
    new_person_note GET /people/:person_id/notes/new(.:format) notes#new 
     edit_note GET /notes/:id/edit(.:format)     notes#edit 
       note GET /notes/:id(.:format)      notes#show 
        PUT /notes/:id(.:format)      notes#update 
        DELETE /notes/:id(.:format)      notes#destroy 
    account_people GET /account/:account_id/people(.:format)  people#index 
        POST /account/:account_id/people(.:format)  people#create 
new_account_person GET /account/:account_id/people/new(.:format) people#new 
     edit_person GET /people/:id/edit(.:format)    people#edit 
      person GET /people/:id(.:format)      people#show 
        PUT /people/:id(.:format)      people#update 
        DELETE /people/:id(.:format)      people#destroy 
    account_index GET /account(.:format)      account#index 
        POST /account(.:format)      account#create 
     new_account GET /account/new(.:format)     account#new 
     edit_account GET /account/:id/edit(.:format)    account#edit 
      account GET /account/:id(.:format)     account#show 
        PUT /account/:id(.:format)     account#update 
        DELETE /account/:id(.:format)     account#destroy 

के रूप में देखा जा सकता है, तो आप किसी भी स्तर आप तय करते हैं आप की जरूरत पर सभी मॉडलों की पहुंच है। बाकी जो भी आप अपने नियंत्रक कार्यों में डालते हैं उसके नीचे है।

आप वास्तव में कार्यों पर काम करने के लिए सुनिश्चित करें कि आप उचित कार्यवाही करते आईडी पैरामीटर में पारित नहीं कर रहे हैं, इसलिए यदि आप एक विशिष्ट मॉडल के लिए एक आईडी का इस्तेमाल करते हैं तो जांच कर लें कि आईडी पैरामीटर सूची में है बनाने के लिए है और यदि वैकल्पिक कार्रवाई नहीं करते हैं। जैसे यदि आप खाता आईडी पास नहीं करते हैं तो सुनिश्चित करें कि आप इसका उपयोग करने की कोशिश नहीं करते हैं

आपकी टिप्पणी में कहा गया है कि आप पहले ही उथले मार्गों का उपयोग करते हैं, लेकिन यह आपके प्रश्न में पोस्ट नहीं किया गया है?

+0

मैं वर्तमान में मेरे मार्गों में उथले सच सिर्फ फ़ाइल अनिश्चित कैसे मैं खाता आईडी के बिना लोग/नोटों का उपयोग कर सकते कर रहा हूँ है। रेल एक ID' – Yooku

+0

मैं जवाब नवीनीकृत किया है बिना इस त्रुटि 'खाता नहीं मिल सका फेंक रहा है। उम्मीद है कि चीजों को स्पष्ट करता है – jamesc

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