2011-08-03 72 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(不知道是否是由您或定義是寶石的一部分)很可能就沒有適當的間距一些字符串連接或者異常回溯沒有指向正確的代碼行。

希望這會有所幫助。