使用HAML拥有rails app(3.0.9),本地开发服务器运行正常。但是当我运行rails s -e production时,我的页面会出现这个错误:
NoMethodError: undefined method `+@' for #<String:0x00000006331098>
错误说它在这一行(从视图中,用HAML编写):
%tr{:class=> cycle("even","odd")}
我没有发现为什么会发生这种情况。请帮忙。
答案 0 :(得分:1)
cycle
方法是否进行任何类型的字符串连接?
我在代码审核期间最近遇到了此错误。
代码是这样的:
anObject.instance_method +string_var
instance_method
返回一个字符串,该字符串将附加变量string_var
中的字符串值。
将代码更改为此工作
anObject.instance_method + string_var
#注意+
没有空格,在string_var上调用unary +
方法,但在String类上没有定义unary +
方法。因此例外。
请注意,unary +
方法定义为def +@
,因此异常消息显示“未找到方法+@
”。
这个要点清楚地表明:https://gist.github.com/1145457
无论如何,在你的情况下,方法cycle
(不知道它是由你定义还是作为gem的一部分)可能是在没有适当间距的情况下进行一些字符串连接或者异常回溯没有指向正确的代码行。
希望这有帮助。