我正在使用每个Rails请求发送的request.env
值构建一个url字符串。应该很简单,但我得到一个奇怪的错误。
代码:
my_url = "https://"
+ request.env['HTTP_HOST']
+ "something/"`
错误:undefined method '+@' for "localhost:3000":String
任何想法我都缺少哪些明显的东西?也尝试使用request.env['HTTP_HOST'].to_s
,但这没有帮助。
答案 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/"