2010-03-01 64 views
45

在Ruby on Rails 2.3.5中是否有等價於PHP的urlencode? (它編碼一個字符串用於URL的查詢部分) 我對它進行了搜索,但所有的答案似乎要追溯到2006年之前,似乎是日期。 This is what I found。在視圖中調用CGI::escape似乎有點不正常。在軌道上的紅寶石的URL編碼等效

是否有等效的輔助函數?

謝謝!

回答

96

相信u輔助方法,是你在找什麼:

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

我似乎無法找到該方法的文檔,但如果我在不久的將來找到它我會一定要把鏈接放在這裏。

編輯:你可以找到這種方法的文件here

+0

沒有。 PHP的urlencode(請參閱http://php.net/urlencode)會執行諸如「」 - >「%20」之類的操作。 – Matchu 2010-03-01 03:39:23

+0

啊,我的道歉。請看我編輯的答案。 – 2010-03-01 03:41:38

+0

啊!還沒有機會使用那個幫手呢!所以不會讓我改變選票,因爲它似乎並不認爲你的答案是編輯的;我會在幾分鐘後回來查看是否有變化。 – Matchu 2010-03-01 03:45:33

60

如果你想這樣做沒有ERB,你可以使用以下命令:

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

顯然,不要在視圖中使用這個,但這個答案有助於我在這裏的谷歌搜索:) – davetron5000 2012-08-02 21:53:04

38

這比Rack::Utils.escape我更好地工作:

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

,因爲它與%20取代了空格代替的+

+0

URI ::轉義似乎有不同的用途。例如,它不會替換,並且:使用%2C和%3A也不會使用%2F。 Rack :: Utils確實。 – Abdo 2013-02-14 14:50:51

+9

@Ado我認爲URI :: escape是在將URI插入HTML屬性時使用的。 I.E.它使用了像'''','<', and '>'這樣的'''','''',''''''時會​​導致問題的實體。Rack :: Utils.escape適用於當內容被插入_within_一個URI時,例如作爲參數 – Leo 2013-06-18 16:28:34

+0

感謝澄清,@Leo :-) – Abdo 2013-07-17 11:16:44