रेल 4 और 5
रेल 4 में, :paramविकल्प जोड़ा गया था, जो आपको वही दिखता है जो आप देख रहे हैं। आप पर एक नज़र ले जा सकते हैं 3 कोड रेल की तुलना में रेल 4 कोड ।
विवरण
आप इसे अपनी routes.rbफ़ाइल में आसानी से लागू कर सकते हैं :
# config/routes.rb
resources :posts, param: :slug
# app/controllers/posts_controller.rb
# ...
@post = Post.find_by(slug: params[:slug])
# ...
रेल 4 की रिलीज के रूप में, इस कार्यक्षमता को रेल गाइड में प्रलेखित किया गया है ।
रेल 3
दुर्भाग्य से, रेल 3 में, के लिए :keyविकल्पresources हटा दिया गया था, इसलिए आप आसानी से इस तरह से बनाए गए मार्गों के नाम को केवल एक अतिरिक्त विकल्प में पारित करके आसानी से नहीं बदल सकते।
विवरण
मुझे लगता है कि आप पहले से ही किसी भी तरह से काम कर रहे हैं, जिस तरह से आप पिछले एक साल में चाहते हैं, लेकिन मैं एक तरह से आप के प्रभाव में रेल 3 में वर्णन प्राप्त करने के लिए जाऊंगा routes.rb। यह सिर्फ to_paramविधि की तुलना में थोड़ा अधिक काम शामिल करेगा । तुम अब भी मार्गों में कस्टम पैरामीटर परिभाषित परिभाषित कर सकते हैं scopeऔर match(या इसे का चचेरे भाई get, put, post, और delete)। आप बस उस पैरामीटर नाम में लिखेंगे जिसे आप मिलानकर्ता में चाहते हैं:
get 'clients/:client_name', :to => 'clients#show', :as => client
scope 'clients/:client_name' do
get 'sites/:name', :to => 'sites#show', :as => site
end
आपको उन सभी मार्गों को मैन्युअल रूप से जोड़ना होगा जो resourcesस्वचालित रूप से आपके लिए बनाते हैं, लेकिन यह वह हासिल करेगा जो आप खोज रहे हैं। आप पुनरावृत्ति में से कुछ को निकालने के लिए अतिरिक्त ब्लॉक के :controllerसाथ विकल्प का प्रभावी रूप से उपयोग कर सकते हैं ।scopescope
EDIT (8 मई, 2014): यह स्पष्ट करें कि उत्तर में रेल 3 और 4 दोनों की जानकारी है। सटीक लाइन नंबरों पर जाने के लिए कोड को लिंक अपडेट करें और कमिट करें ताकि वे अधिक समय तक काम करें।
EDIT (16 नवंबर, 2014): रेल 4 अब सबसे ऊपर होनी चाहिए और इसमें प्रासंगिक जानकारी शामिल होनी चाहिए क्योंकि यह पिछले कुछ समय से रेल का वर्तमान संस्करण है।
EDIT (अगस्त 9, 2016): प्रतिबिंबित करें कि समाधान अभी भी रेल 5 में काम करता है, और पुरानी लिंक को अपडेट करें।