2012-11-15 18 views
9

से वे कर रहे हैं, और मार्गों में से गुच्छा बाहर आता है, लेकिन वे जहां परिभाषित कर रहे हैं ???रेल मार्गों रेक जब आप लिखते हैं</p> <pre><code>rake routes </code></pre> <p>जहां

मुझे पता है कि कुछ डिफ़ॉल्ट हैं, और दूसरों के बारे में कैसे?

उदाहरण के लिए, यह नियंत्रक से एक स्क्रिप्ट है, मैंने 's' को कुछ करने से रोकने की कोशिश की, लेकिन यह काम नहीं कर सकता .... क्या वे कहीं और परिभाषित हैं? इसके अलावा, वे पैरामीटर कब लेते हैं और जब नहीं, मैं इसे कैसे जानता हूं? धन्यवाद!

def hello 
    redirect_to do_things_shop_path(shop) 
end 

def do_things 
end 
+0

रूट्स को 'config/routes.rb' फ़ाइल में परिभाषित किया गया है। – Brian

उत्तर

19

रेल रूटिंग कॉन्फ़िगरेशन config/routes.rb फ़ाइल में रखा गया है।

पैरामीटर लेना कई चीजों पर निर्भर करता है। rake routes मार्गों के साथ पैरामीटर ले जाएगा दिखाएगा। सदस्य कार्रवाई पैरामीटर ले जाएगा।

posts GET  /posts(.:format)   posts#index 
     POST  /posts(.:format)   posts#create 
edit_post GET  /posts/:id/edit(.:format) posts#edit 

अंतिम पंक्ति में, आप posts/:id/edit की तरह यूआरएल करेंगे। इस पथ को :id पैरामीटर की आवश्यकता है। आप इस मार्ग को कई तरीकों से कॉल कर सकते हैं। उनमें से एक है की तरह:

edit_post_path(@post) 

आप एक कस्टम कार्रवाई बनाने के लिए चाहते हैं, (पदों नियंत्रक के तहत कहते हैं), तो आप इसे इस प्रकार की घोषणा कर सकते हैं:

match `/posts/:id/things_with_id`, :to => 'posts#do_things_with_id', :as => 'do_things_with_id 
match `/posts/things_without_id`, :to => 'posts#do_things_without_id', :as => 'do_things_without_id 

सबसे पहले एक एक आईडी, जबकि आवश्यकता है दूसरा नहीं है। तदनुसार उन्हें कॉल करें:

do_things_with_id_path(@post) 

do_things_without_id() 

एक संसाधन के लिए, आप इन आसानी से उपयोग करते हुए सदस्य & संग्रह कार्रवाई बना सकते हैं। सदस्य कार्रवाई की आवश्यकता होती है जबकि संग्रह कार्रवाई नहीं होती है।

resources :posts do 
    member { get 'do_thing' } 
    collection { get do_things' } 
end 

आशा है कि आपको यह मिल जाएगा।

वैसे, यदि आप इन स्पष्ट रूप से समझना चाहते हैं तो आपको निम्न मार्गदर्शिका पढ़नी होगी। http://guides.rubyonrails.org/routing.html