2011-08-03 73 views
5

有一个使用HAML的Rails应用程序(3.0.9),本地开发服务器运行良好。但是,当我运行的轨道小号-e生产,我的网页给出了这样的错误:Rails生产环境与周期冲突

NoMethodError: undefined method `[email protected]' for #<String:0x00000006331098> 

错误说,这是在这条线(从视图中,写在HAML):

%tr{:class=> cycle("even","odd")} 

我米没有发现为什么发生这种情况。请帮忙。

+0

奇怪......我会试着在真正的生产服务器上运行它,比如'thin',看看有什么结果。你可以推到Heroku并且很容易地尝试它。 – iwasrobbed

+0

我首先在Heroku上发现了这个问题,然后在本地进行了测试。 –

+0

尝试将其重写为:'%tr {:class =>“#{cycle('even','odd')}”}'不应该有所作为,但是您的代码也不应该破坏,因为它是。 – iwasrobbed

回答

1

cycle方法是否执行任何形式的字符串连接?

我最近在代码审查期间遇到此错误。

的代码是这样的:

anObject.instance_method +string_var

instance_method返航一个字符串,它是与存在于可变string_var字符串值被附加。

代码更改为这个工作

anObject.instance_method + string_var#注意+

没有空间unary +方法的调用string_var后的空间,但没有unary +方法对String类中定义。因此例外。

请注意,unary +方法定义为def [email protected],因此异常消息显示“找不到方法[email protected]”。

这要点清楚:https://gist.github.com/1145457

不管怎么说,你的情况,该方法cycle(不知道是否是由您或定义是宝石的一部分)很可能就没有适当的间距一些字符串连接或者异常回溯没有指向正确的代码行。

希望这会有所帮助。