2013-07-02 32 views
1

我有一個很常見的輔助方法,在我的應用助手:未定義的方法'/」爲無:NilClass

module ApplicationHelper 
    def quid(num) 
     number_to_currency (num/100.0), unit: "£" 
    end 
end 

但我的應用程序不斷拋出的'近親:NilClass'未定義的方法`/錯誤。

如果我打印number_to_currency(num)它沒有問題,它只是當我試圖把運算符像/ * - +,它會給出這個錯誤。

這工作正常,直到今天,只有在產品索引視圖中,我得到的錯誤。

我不確定有什麼問題,誰能幫忙解釋一下?我很難過!

UPDATE:

這裏的產品索引視圖代碼:

<% @products.each do |product| %> 

     <h3><%= product.title %></h3> 
     <div id="link_text"><%= link_to "See more", product %></div> 
     <%= image_tag(product.avatar.url(:medium)) %><br/> 
     <%= product.description %><br /> 
     <%= quid product.price_in_pence %> 

    <% end %> 

price_in_pence是一個整數,但是把100.00到100沒有幫助,所以我不認爲這是問題,我認爲這是因爲num由於某種原因返回零。

+0

不知道這是不是,但是,你是否檢查過'num'也是浮動的? –

回答

1

錯誤來了,因爲在某些情況下num變量是nilnumber_to_currency(nil)作品,因爲助手是這樣實現的:

def number_to_currency(number, options = {}) 
    return unless number 
    ... 
end 

來源:http://apidock.com/rails/ActionView/Helpers/NumberHelper/number_to_currency

你看,nil不傷在這裏,因爲它會立即返回。

但是,您的功能首先嚐試執行nil/100.0。由於錯誤狀態,/方法未在nil上定義。

您可能需要一些特殊的nil治療,或者在nil提供給您的助手時尋找案例。

+0

謝謝tessi,這絕對是個問題。你可以提供任何幫助,瞭解如何找出無助的地方嗎? – jfdimark

+2

實際上沒關係。我可以看到問題出在哪裏,並且我將添加一個類驗證以確保它在將來不會再失效。 – jfdimark

相關問題