简单的字符串连接给出错误" + @"

时间:2014-04-26 23:29:59

标签: ruby-on-rails ruby-on-rails-4

我正在使用每个Rails请求发送的request.env值构建一个url字符串。应该很简单,但我得到一个奇怪的错误。

代码:

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

错误:undefined method '+@' for "localhost:3000":String

任何想法我都缺少哪些明显的东西?也尝试使用request.env['HTTP_HOST'].to_s,但这没有帮助。

2 个答案:

答案 0 :(得分: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

在字符串上没有定义一元+运算符(采用单个参数)。

Ruby将换行符解释为每个语句的结尾,除非在语法上,语句不能结束(例如,最后一个字符是+运算符,或者不是所有括号都是关闭的等等)。

答案 1 :(得分:0)

猜猜你不能在视图中的多行连接字符串。把它全部放在一行就可以修复它。

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

坏:

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