[英]Rails: undefined method `*' for nil:NilClass
我是 Rails 的新手,想在模型中進行基本數學運算,以便從一些數學運算中獲得售價。 我在產品模型中寫了一個簡單的方程。 就這個:
def selling_price
foodio_price + (foodio_price*@@tax) + @@dc
end
但是它為 nil:NilClass 給出了錯誤未定義的方法 `*'。 它不能識別乘法的 * 以及和的 +。 任何人都可以告訴這里有什么問題嗎?
該函數中的變量之一(如foodio_price
或@@tax
)是nil
。 Ruby 中的一切都是對象,甚至包括nil
,您在其他編程語言中可能將其稱為null
。 nil
每個實例都繼承自NilClass
類。 因此, nil:NilClass
指的是nil
一個實例,它的類型是NilClass
。
要調試此問題,您可以通過添加puts
語句來檢查這些值中的哪些(或三個) nil
。
@@tax
和@@dc
都是nil
。
您很少需要在 Rails 中使用這些類變量。
我建議只將tax
和dc
聲明為常量,所以像
TAX = 0.09 DC = 0.10
在你的類文件中的某個地方。
foodio_price
的nil
參數的默認值
def selling_price foodio_price if foodio_price.nil? return 0.0 foodio_price + (foodio_price*@@tax) + @@dc end
錯誤是說 foodio_price 是來自 NilClass 類的對象
在偽代碼中,foodio_price = nil
您的變量 foodio_price 未實例化(尚無任何值)
你應該試試這個
def selling_price(foodio_price)
foodio_price + (foodio_price*@@tax) + @@dc
end
在代碼的其他地方,您調用函數selling_price
,將參數foodio_price
傳遞給它
有效。 將我的模型更改為:
def selling_price
self.foodio_price ||= 0.0
foodio_price + (foodio_price*@@tax) + @@dc
end
foodio_price + ((foodio_price || 1)*(@@tax || 1|) + (@@dc || 0)
試試這個
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.