我是新手入門,想在模型中做基本的數學運算來獲得某些數學的價格。我在產品模型中寫了一個簡單的等式。這是它:Rails:未定義的方法`*'爲零:NilClass
def selling_price
foodio_price + (foodio_price*@@tax) + @@dc
end
但它給錯誤未定義的方法`*'爲零:NilClass。它不能識別乘法以及求和。有人可以告訴這裏有什麼問題嗎?
我是新手入門,想在模型中做基本的數學運算來獲得某些數學的價格。我在產品模型中寫了一個簡單的等式。這是它:Rails:未定義的方法`*'爲零:NilClass
def selling_price
foodio_price + (foodio_price*@@tax) + @@dc
end
但它給錯誤未定義的方法`*'爲零:NilClass。它不能識別乘法以及求和。有人可以告訴這裏有什麼問題嗎?
誤差跟它的foodio_price是從NilClass類
對象在僞代碼中,foodio_price =零
你的可變foodio_price不instancied(不具有還沒有任何值)
你應該試試這個
def selling_price(foodio_price)
foodio_price + (foodio_price*@@tax) + @@dc
end
而在你的代碼,其中調用該函數selling_price
的其他地方,你通過我t參數foodio_price
它說錯了參數(0表示1) – user1977201 2013-03-11 06:11:50
該函數中的一個變量(如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
在類文件的地方。
nil
參數的默認值
foodio_price
def selling_price foodio_price
if foodio_price.nil? return 0.0
foodio_price + (foodio_price*@@tax) + @@dc
end
是的,你說得對。 Foodioprice是零。我已經定義了稅和直流。但是由於Foodio_price來自用戶的輸入,它將是零。那該怎麼做呢? – user1977201 2013-03-11 06:10:03
如果'foodio_price'爲零,請執行類似我的修改建議的操作。 – varatis 2013-03-11 13:40:47
它的工作。改變了我的模型:
def selling_price
self.foodio_price ||= 0.0
foodio_price + (foodio_price*@@tax) + @@dc
end
foodio_price + ((foodio_price || 1)*(@@tax || 1|) + (@@dc || 0)
試試這個
哪裏'foodio_price'從何而來?這是一種方法或ActiveRecord屬性或其他? – 2013-03-11 05:45:48
@ muistooshort foodio_price來自產品形式。 – user1977201 2013-03-11 06:13:59