2014-04-26 37 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/"