2014-04-26 42 views
0

我正在使用每個Rails請求發送的request.env值構建一個url字符串。應該很簡單,但我得到一個奇怪的錯誤。簡單字符串連接出現錯誤「+ @」

代碼:

my_url = "https://" 
    + request.env['HTTP_HOST'] 
    + "something/"` 

錯誤:undefined method '[email protected]' for "localhost:3000":String

任何想法,我缺少的是什麼明顯的事情?也嘗試使用request.env['HTTP_HOST'].to_s,但這並沒有幫助。

+0

通過方法,你必須這麼做很奇怪 - 你應該可以使用Rails的內置鏈接生成器。爲什麼你自己創建一個到自己的服務器的URL? – tdooner

回答

3

嘗試嵌入字符串中的主機:

my_url = "https://#{request.env['HTTP_HOST']}something/" 

您的代碼封裝在不好的地方的線條,取而代之的是,你可以試試:

my_url = "https://" + 
    request.env['HTTP_HOST'] + 
    "something/" 

你寫它的方式,他們是3條獨立的語句,並且代碼做到這一點:

my_url = "https://" # set my_url to https:// 
+ request.env['HTTP_HOST'] # use + as an unary operator (kind of like -number), and throw away the result 
+ "something/" # same thing 

對字串沒有定義一元+運算符(取一個參數)。

紅寶石解釋換行符每個語句結束時,除了在語法,語句不能結束的情況下(例如,最後一個字符是一個+運營商,或不是所有的托架關閉等)

0

猜測你不能在視圖中的多行上串聯字符串。把它全部放在一行上,並修復它。

好: my_url = "https://" + request.env['HTTP_HOST'] + "something/"

壞:

my_url = "https://" 
    + request.env['HTTP_HOST'] 
    + "something/"