2011-10-06 15 views
8

मैंने अभी रेल पर रूबी स्थापित की है और posts नामक एक मचान बनाया है। RoR ने मेरे लिए नियंत्रक और अन्य आवश्यक फाइलें उत्पन्न की हैं।रेल पर रूबी में मार्ग कैसे बदलें?

मैंने posts_controller में एक नई विधि बनाई, लेकिन मैं इसे एक्सेस नहीं कर सकता। मैंने अन्य विधियों को देखा जो नियंत्रक में हैं और ऐसा लगता है कि मुझे /posts/[MY POST ID]/[MY METHOD NAME] तक उन्हें एक्सेस करने की आवश्यकता है।

मान लीजिए कि मैंने नियंत्रक में अपनी कस्टम विधि hello बनाई है, मैं इसे कैसे एक्सेस करूं?

मैंने routes.rb पर देखा, लेकिन इसके लिए कोई कॉन्फ़िगरेशन नहीं है।

अपडेट किया गया:

मैं समझता हूँ कि मैं मैन्युअल routes.rb में यह कॉन्फ़िगर कर सकते हैं, लेकिन सब कैसे अन्य तरीकों काम करते हैं? उदाहरण के लिए, मेरे पास "posts_controller.rb" नियंत्रक में "edit" और "update" विधियां हैं। मार्गों को कॉन्फ़िगर किए बिना वे दो विधियां कैसे काम करती हैं?

# GET /posts/1/edit 
    def edit 
    @post = Post.find(params[:id]) 
    end 

मैं एक विन्यास कि /posts/[0-9]/edit नमूने का मिलान नहीं मिल रहा। http://guides.rubyonrails.org/routing.html

हर:

उत्तर

9

जो दस्तावेज आप खोज रहे हैं वह Rails Routing From the Outside In है। एक बार जब आप इसे पढ़ लेंगे तो आप सब कुछ समझेंगे कि रेल आपके अनुरोध को लेते हैं और इसे आपके नियंत्रक में विधि पर इंगित करते हैं।

3

रेल 3.x

match 'posts/hello' => 'posts#hello'

उपलब्ध में से example.com/posts/hello

4

यह आपको एक अच्छा सिर मार्गों पर शुरू दे देंगे आपके द्वारा बनाई गई विधि के पास अपना रास्ता होगा, रेलों को शेष सिद्धांत पर बनाया गया है, और आपके मचान ने पोस्ट नियंत्रक में विधियों का निर्माण किया है जो उन पथों का पालन करते हैं, जैसे इंडेक्स, शो इत्यादि ....

आप अपनी विधि को इसमें शामिल करने के लिए मजबूर कर सकते हैं, लेकिन वास्तविकता में आपको शायद ही कभी ऐसा करने की आवश्यकता है क्योंकि सम्मेलन का पालन करना कहीं अधिक आसान है।

5

आपको इसके लिए routes.rb पर एक मार्ग जोड़ने की आवश्यकता है। उदाहरण के लिए:

# Previous routes 
# resources :posts 

# Updated routes 
resources :posts do 
    get "hello", :on => :member 
end 

इस Rails guide about routing पर एक नज़र डालें, आपकी मदद करेगा रेल मार्ग को समझते हैं।

1

जब आप पोस्ट जेनरेट करने के लिए मचान का इस्तेमाल करते थे, तो उसने फ़ाइल में एक पंक्ति resources :posts जोड़ा। वह पंक्ति जेनरेट की गई सभी नियंत्रक कार्रवाइयों के लिए मार्गों को कॉन्फ़िगर करती है। जैसा कि कालेब ने उल्लेख किया है, हर कार्रवाई में एक समर्पित मार्ग नहीं है। एक एकल पथ कई क्रियाओं के अनुरूप हो सकता है क्योंकि रेल भी HTTP विधि को ध्यान में रखता है। इसलिए, उदाहरण के लिए, पथ /posts HTTP विधि GET के साथ नियंत्रक कार्रवाई index से मेल खाता है, जबकि HTTP विधि PUT के साथ समान पथ नियंत्रक कार्रवाई update से मेल खाता है। जब आप कंसोल से rake routes चलाते हैं तो आप इन संगठनों को देख सकते हैं।मैं जॉर्डन और कालेब से सहमत हूं कि रेल गाइड एक अच्छा पढ़ा है और आपको मार्गों को समझने में मदद करेगा।

+0

// उत्तर के लिए धन्यवाद! कोड की एक पंक्ति (संसाधन: पोस्ट) पढ़कर आरओआर मार्गों को कैसे कॉन्फ़िगर करता है? – Moon

+0

मैंने स्रोत कोड को नहीं देखा है कि यह वास्तव में रेल कैसे करता है, लेकिन जब आप 'संसाधन' रेल का उपयोग करते हैं तो रेल 7 मार्ग सेट करते हैं। उपर्युक्त मार्गदर्शिका की धारा 2.2 देखें: http://guides.rubyonrails.org/routing.html – John

+0

मुझे इस मार्ग की मूलभूत बातें पर बेहतर स्पष्टीकरण कभी नहीं मिला: https://www.youtube.com/watch? v = g3SuV-A9bak और सूचकांक = 3 और सूची = PLAC08CE3187BC75F1 – Mauddev

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