2011-06-29 11 views
36

मुझे पता है कि मेरे रेल ऐप के मार्ग रूट को नियंत्रक और एक क्रिया में कैसे सेट करें।रेल रूटिंग (रूट: से => ...)

लेकिन आईडी कैसे जोड़ें?

/pages/show/1 रूट होना चाहिए।

मैं इसे कैसे सेट करूं?

उत्तर

57

इस एक ही समस्या थी और यह मेरे लिए काम किया:

root :to => "pages#show", :id => '1' 
+0

यह है कि root_path (सिवाय अच्छा है) अब '= url जब कहीं और अनुप्रयोग में से जुड़ा हुआ करने के लिए जोड़ रहा है आईडी 1' ... – msanteler

+0

@MatthewD - उत्सुक क्यों आप रूट मार्ग चाहेगा एक आईडी को इंगित करने के लिए? – BKSpurgeon

2

प्रयास करें:

match 'pages/show/:id' => 'pages#show', :as => :root 

रेल में सांत्वना।

root  /pages/show/:id(.:format)  {:controller=>"pages", :action=>"show"} 

आशा है कि मदद करता है: rake routes | grep root, की तरह कुछ दिखाना चाहिए।

4

मैथ्यू के समाधान काम करता है, लेकिन मुझे लगता है कि वस्तु लाने के लिए और अधिक पठनीय है। उदाहरण के लिए, मान लें कि आप "लैंडिंग" नाम वाले पृष्ठ के लिए Page#show कार्रवाई को रूट करना चाहते हैं। यह एक थोड़ा और अधिक पठनीय है:

root :to => "pages#show", :id => Page.find_by_name("landing").id 

एक प्रदर्शन दृष्टिकोण से, इस समाधान भी बदतर है, क्योंकि यह एक अतिरिक्त डेटाबेस क्वेरी की आवश्यकता है, लेकिन अगर प्रदर्शन एक उच्च प्राथमिकता नहीं है इस समाधान अधिक पठनीय है।

19

Rails 4.0 के रूप में, आप इस तरह जड़ मार्ग घोषणा कर सकते हैं:

root 'controller#action' 
+1

लेकिन आप मार्ग में आईडी कैसे शामिल करते हैं? – dlu

2

मैं एक विशिष्ट ब्लॉग में मुख पृष्ठ पर बात करने के लिए रेल 5.1 उपयोग कर रहा हूँ। config/routes.rb मैं है ... में

root 'blogs#show', {id: 1} 

इस के लिए रूट मार्ग इंगित करेगा/ब्लॉग/1

मैं एक ब्लॉग साइट मैं निर्माण कर रहा हूँ पर यह कर रहा हूँ। पहला ब्लॉग मुख्य साइट ब्लॉग और होमपेज होगा। ?

चीयर्स

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