[英]Weird wrong number of arguments (1 for 0) error?
我遇到了方法定義的問題。 我在“購買”模型中有這個代碼:
def update_amount newamount
self.total_amount = self.total_amount +newamount
end
這個代碼在其他地方:
buy.update_amount(amount)
如果我運行該程序,我會收到此錯誤:
ArgumentError (wrong number of arguments (1 for 0)):
app/models/buy.rb:18:in `update_amount'
現在,如果我為此改變(只是為了嘗試):
buy.update_amount
我收到此錯誤:
ArgumentError (wrong number of arguments (0 for 1)):
app/models/buy.rb:18:in `update_amount'
我是Ruby on Rails的新手,所以它可能很簡單。
你有相當棘手的錯誤! 這條線:
self.total_amount = self.total_amount +newamount
被Ruby解釋為:
self.total_amount = self.total_amount(+newamount)
因此你得到了ArgumentError
。
Ruby lexer錯誤+newamount
參數(即一元加上后跟newamount
標識符),因為它知道total_amount
是方法調用,而+
后面沒有空格。 將該行寫為:
self.total_amount = self.total_amount + newamount
將解決問題。 或者更好的是,使用+=
簡寫為@backpackerhh建議。
def update_amount(newamount)
self.total_amount += newamount
end
這會將新金額添加到total_amount
屬性的當前值。
您試圖將newamount
作為參數傳遞給self.total_amount
屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.