2010-03-01 19 views
45

क्या रेलवे 2.3.5 पर रुबी में PHP के urlencode के बराबर है? (यह एक यूआरएल के एक क्वेरी भाग में इस्तेमाल होने वाली स्ट्रिंग को एन्कोड करता है) मैंने इसे गुगल किया लेकिन सभी उत्तर 2006 से पहले की तारीख में लगते हैं और तिथियां लगती हैं। This is what I found। एक दृश्य में CGI::escape पर कॉल करने के लिए यह थोड़ा असामान्य लगता है।रेल पर रूबी में समकक्ष यूआरएल एनकोड

क्या कोई समकक्ष सहायक कार्य है?

धन्यवाद!

उत्तर

96

मेरा मानना ​​है कि u सहायक विधि आप जो खोज रहे हैं:

<%=u "URL ENCODE <p>ME</p>" %> 

मुझे लगता है कि विधि के लिए दस्तावेज़ प्राप्त नहीं कर पा रहे हैं, लेकिन मैं हूँ अगर मैं निकट भविष्य में इसे खोजने यहां एक लिंक डालना सुनिश्चित करें।

संपादित करें: आप इस विधि here के लिए प्रलेखन पा सकते हैं।

Rack::Utils.escape('http://example.com') 
#=> "http%3A%2F%2Fexample.com" 
+0

नहीं। PHP का urlencode (http://php.net/urlencode देखें) "" -> "% 20" जैसी चीजें करता है। – Matchu

+0

आह, मेरी माफ़ी। कृपया मेरा संपादित उत्तर देखें। –

+0

आह! अभी तक उस सहायक का उपयोग करने का मौका नहीं मिला है! तो मुझे वोटों को स्विच करने नहीं देगा क्योंकि ऐसा लगता है कि आपका जवाब संपादित नहीं किया गया है; मैं यह देखने के लिए कुछ मिनटों में वापस जांच करूंगा कि क्या यह परिवर्तन करता है। – Matchu

60

आप ERB के बिना यह करने के लिए चाहते हैं, तो आपको निम्न का उपयोग कर सकते +

+2

जाहिर है, इसे एक दृश्य में उपयोग न करें, लेकिन इस उत्तर ने मुझे Google खोज के साथ मदद की जो मुझे यहां लाया :) – davetron5000

38

यह Rack::Utils.escape तुलना में मेरे लिए बेहतर काम किया:

URI::escape('http://example.com/?param=Hello World') 

क्योंकि यह बजाय %20 साथ रिक्त स्थान की जगह

+0

यूआरआई :: बचने का एक अलग उपयोग होता है। उदाहरण के लिए, यह प्रतिस्थापित नहीं करता है, और:% 2C और% 3A के साथ और% 2F के साथ। रैक :: उपयोग करता है। – Abdo

+9

@Abdo मुझे विश्वास है कि यूआरआई :: एक HTML विशेषता में यूआरआई डालने पर बचने के लिए उपयोग किया जाता है। अर्थात। यह उन संस्थाओं से बच निकलता है जो इस 'href = "<%= ... %>" जैसे '' '' ''' जैसे उपयोग किए जाने पर समस्याएं पैदा करेंगे। रैक :: Utils.escape तब होता है जब सामग्री को _within_ एक URI डाला जाएगा, उदाहरण के लिए पैरामीटर। – Leo

+0

स्पष्टीकरण के लिए धन्यवाद, @Leo :-) – Abdo

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