2016-08-23 32 views
0

我需要發送電子郵件作爲查詢字符串中的參數。在ruby中是否存在URL編碼點('。')的函數

我試過的標準函數都不能編碼'。' (點)。

CGI.escape('[email protected]') 
=> "my.fake%40email.com" 

URI.escape('[email protected]') 
=> "[email protected]" 

URI.encode('[email protected]') 
=> "[email protected]" 

ERB::Util.url_encode('[email protected]') 
=> "my.fake%40email.com" 

我可以很容易地自己做一個函數,但我只想知道是否有任何方法。

+4

主要問題是爲什麼你需要在地球上編碼點? – mudasobwa

+0

在rails路徑中,點是有效的分隔符。 – molokoV

+0

如果這些方法沒有對期間進行編碼,那麼我認爲可以安全地假設它不應該被編碼......也許你可以用其他方式解決你的問題。也許給你的問題添加一個有問題的路線的例子? –

回答

2

你實際上不需要對點進行編碼。在URL中的?之後,/.沒有任何具體含義。

1

正如tadman指出的here,如果路線類似get "users/:email"之類的東西,則會出現點的問題。因爲軌道認爲點作爲分隔符。正如the docs指出,您將需要添加一個約束,如:

get "users/:email", to: "users#show", constraints: { email: /.*/ } 

有了這樣你不需要逃避在url點。