नामित मार्गों _पथ बनाम _र्ल


109

रेल नामांकित मार्ग प्रदान करती है ।

मार्ग या url का उपयोग करके रूट सहायक को कहा जा सकता है

डॉक्स से जैसे:

# and provide these named routes
root_url   # => 'http://www.example.com/'
root_path  # => '/'

स्पष्ट रूप से *_url, मैंने अभी तक सहायक का उपयोग नहीं किया है, मैं चीजों का उपयोग करने में सक्षम था *_path

मैं थोड़ा उलझन में था कि इन दो अलग-अलग सहायकों का उद्देश्य क्या है?

वे एक दूसरे से कैसे भिन्न हैं?

स्पष्टीकरण के साथ कुछ वास्तविक उदाहरणों का उपयोग करने के लिए जब महान होगा।

जवाबों:


156

_pathसहायक साइट-रूट-सापेक्ष पथ प्रदान करते हैं। आपको इसका ज्यादातर समय उपयोग करना चाहिए।

_urlप्रोटोकॉल और सर्वर नाम सहित सहायक एक पूर्ण पथ प्रदान करते हैं। मैंने पाया है कि सर्वर पर ऐप के लिंक बनाते समय मैं मुख्य रूप से ईमेल में इनका उपयोग करता हूं। बाहरी उपयोग के लिए लिंक प्रदान करते समय उनका उपयोग मुख्य रूप से किया जाना चाहिए। (YouTube लिंक "साझा करें" अनुभाग के अंतर्गत ईमेल लिंक, RSS और कॉपी फ़ील्ड पेस्ट करें और URL फ़ील्ड की तरह सोचें।)


दोनों उत्तर लगभग समान हैं लेकिन मैं आपको इस उदाहरण को सही उत्तर देता हूं "YouTube वीडियो के" साझा करें "अनुभाग के तहत URL फ़ील्ड को कॉपी और पेस्ट करें और @mori :) के लिए पहले से ही +1
Pritesh Jain

धन्यवाद। मैं एक DAM समाधान का निर्माण कर रहा हूं, जहां YouTube क्या करता है, इसके समान एक कॉपी / पेस्ट "शेयर URL" फ़ील्ड है। यह दिमाग में आने वाली पहली चीजों में से एक थी।
क्रिस पीटर्स

13

जब आप अपनी खुद की साइट में एक लिंक डालते हैं, तो मार्ग का डोमेन हिस्सा बेमानी है, और पृष्ठ आकार में जुड़ जाता है, इसलिए आप बस URL के पथ भाग को *_pathसहायक के साथ उपयोग कर सकते हैं । दूसरी ओर, यदि आपकी साइट के बाहर URL का उपभोग किया जाना है, जैसे कि ईमेल या RSS फ़ीड, पूरे URL की आवश्यकता है, इसलिए *_urlसहायक का उपयोग करें ।


मुझे हाल ही में लिंक और डोमेन के साथ एक समस्या हुई है, और _url सहायक उचित डोमेन का उपयोग करके लिंक प्राप्त करने का मेरा एकमात्र साधन था और "होस्टिंग-संबंधित" लिंक नहीं।
पियरे-एड्रियन ब्यूसन

1
जब ऐप में कुछ उपडोमेन हों तो मैं _url हेल्पर का भी इस्तेमाल करता हूं। उदाहरण के लिए, जब abc.example.com _path पर im abc.example.com/somesection पर रीडायरेक्ट करेगा जब _url सही ढंग से example.com/somesection पर रीडायरेक्ट करेगा
Wordica

10

जैसा कि अन्य उत्तर बताते हैं, आपको _urlईमेल लिंक आदि में उपयोग करना चाहिए , लेकिन मैं यह जोड़ना चाहूंगा कि आपको भी _urlपुनर्निर्देशन में उपयोग करना चाहिए , जैसा कि यहां बताया गया है:

https://www.ruby-forum.com/topic/101346#221052

और यहाँ:

http://viget.com/extend/rails-named-routes-path-vs-url

आप यहाँ HTTP विनिर्देश के प्रासंगिक अनुभाग पर एक नज़र डाल सकते हैं:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30


1
पहला लिंक उद्धृत करते हुए (यदि यह गायब हो जाता है): "नियंत्रक में, हालांकि, _ _ _ redirect_to के लिए आवश्यक है क्योंकि HTTP विनिर्देश बताता है कि स्थान: 3xx रीडायरेक्ट में हेडर एक पूर्ण URL है।"
टेराबिट्स 19

2

_पथ सापेक्ष पथ प्रदान करता है।

_url पूर्ण पथ प्रदान करता है।

जब भी आप ईमेल आदि में एक URL भेजते हैं तो यह _path के बजाय _url का उपयोग करने के लिए सबसे अच्छा अभ्यास है।


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