रेलें: कंसोल से पथ सहायक की जाँच करें


288

रेल नामांकित मार्गों के साथ जादू का एक गुच्छा परिभाषित करता है जो आपके मार्गों के लिए सहायक बनाते हैं। कभी-कभी, विशेष रूप से नेस्टेड मार्गों के साथ, किसी दिए गए मार्ग सहायक विधि कॉल के लिए आपको कौन सा URL मिलेगा, इस पर नज़र रखने के लिए यह थोड़ा भ्रमित कर सकता है। क्या रूबी कंसोल का उपयोग करना संभव है, देखें कि दिए गए हेल्पर फ़ंक्शन क्या लिंक उत्पन्न करेगा? उदाहरण के लिए, post_path (पोस्ट) जैसे नामित सहायक को देखते हुए मैं यह देखना चाहता हूं कि URL क्या है।

जवाबों:


422

आप उन्हें rake routesसीधे दिखा सकते हैं।

रेल कंसोल में, आप कॉल कर सकते हैं app.post_path। यह रेल में काम करेगा ~ = 2.3 और> = 3.1.0।


7
बस मेरी अपनी टिप्पणी के अनुसरण में, लगता है कि यह रेल 3 कंसोल से संभव है, यदि आप उपयोग कर रहे हैं। सबसे पहले, अपने ऐप ऑब्जेक्ट में एक नकली अनुरोध चिपकाएं, जैसे कि app.get "/" तब कुछ तरीके से कॉल करें, जैसे कि वांछित तरीके। कुछ इस तरह: app.instance_eval{ post_path(post) }
चुबास

ऊपर चूबस की टिप्पणी रेल 3 में काम करती है। परीक्षण लिखते समय यह बहुत उपयोगी है इसलिए मुझे यह पता लगाने के लिए 1 मिनट इंतजार नहीं करना पड़ता है कि मार्ग सही नहीं है। इसके अलावा, कॉल प्राप्त करना और कॉल का परीक्षण करना बहुत अच्छा है। आपको पहले app.get को कॉल करने की आवश्यकता नहीं है।
बी सेवन

7
app.teh_pathअभी भी रेल 4.0 में काम करता है और मुख्य एप्लिकेशन पथों से इंजन पथों को अलग करने के लिए उपयोगी है।
nurettin

5
यदि आप एक इंजन बढ़ा रहे हैं, उदाहरण के लिए mount Spree::Core::Engine, :at => '/', तो आप इंजन नाम के माध्यम से रास्तों को एक्सेस करेंगे, जैसे app.spree_core_engine.some_path। या, यदि "engine_name" इस कोड में कुछ अलग होने के लिए कॉन्फ़िगर किया गया है तो आप करेंगे app.spree.some_path
जॉर्डन ब्रॉट

मैं जोड़ने के लिए किया था hostपैरामीटर की तरह तो:app.article_url(my_article, host: 'mydomain.com')
Besi

352

आप भी कर सकते हैं

include Rails.application.routes.url_helpers

कंसोल सत्र के अंदर से सहायकों तक पहुँचने के लिए:

url_for controller: :users, only_path: true
users_path
# => '/users'

या

Rails.application.routes.url_helpers.users_path

4
यह उपरोक्त समाधान IMO से अधिक आसान है
एंड्रयू

2
यह मेरी राय में मूल प्रश्न का सही उत्तर है
nemesisdesign

यह सबसे अच्छा जवाब होना चाहिए IMO
ल्यूक

4
मुझे यह याद रखने की जहमत नहीं उठाई जा सकती, इसलिए मैं यहां हर दो दिन में कॉपी / पेस्ट करने आता हूं। धन्यवाद।
स्पेन्सर

1
क्या आप कंसोल से सीधे url_helpers का संदर्भ भी नहीं दे सकते, जैसे Rails.application.routes.url_helpers.users_path?
TheMadDeveloper

25

रेल कंसोल में, वैरिएबल ऐप में एक सत्र ऑब्जेक्ट होता है, जिस पर आप पथ और URL सहायकों को उदाहरण विधियों के रूप में कॉल कर सकते हैं।

app.users_path

11

आप हमेशा path_helpersकंसोल में आउटपुट की जांच कर सकते हैं । बस के साथ सहायक का उपयोग करेंapp

app.post_path(3)
#=> "/posts/3"

app.posts_path
#=> "/posts"

app.posts_url
#=> "http://www.example.com/posts"

2

याद रखें कि क्या आपका मार्ग नाम-स्थान पर है, जैसे:

product GET  /products/:id(.:format)  spree/products#show

फिर कोशिश करो :

helper.link_to("test", app.spree.product_path(Spree::Product.first), method: :get)

उत्पादन

Spree::Product Load (0.4ms)  SELECT  "spree_products".* FROM "spree_products"  WHERE "spree_products"."deleted_at" IS NULL  ORDER BY "spree_products"."id" ASC LIMIT 1
=> "<a data-method=\"get\" href=\"/products/this-is-the-title\">test</a>" 

1
spreeउदाहरण के लिए धन्यवाद , आप स्वर्ग से गिर गए एक स्वर्गदूत हैं।
bonafernando
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.