0
這是我的課:未定義的方法「+」:NilClass
class Combatant < ActiveRecord::Base
attr_accessible :resource_current
def change_resource(amount)
resource_current += amount
if resource_current < 0
resource_current = 0
elsif resource_current > 100
resource_current = 100
end
end
end
當戰鬥類的對象上執行change_resource我越來越:
undefined method `+' for nil:NilClass
當然resource_current已初始化並具有值6.
當我將方法更改爲:
def change_resource(amount)
self.resource_current += amount
if resource_current > 100
resource_current = 100
elsif resource_current < 0
resource_current = 0
end
end
有云:
undefined method `<' for nil:NilClass
所以我再添 '自我':
def change_resource(amount)
self.resource_current += amount
if resource_current > 100
resource_current = 100
elsif self.resource_current < 0
resource_current = 0
end
end
的方法現在的工作。 爲什麼?爲什麼我不需要第一個條件的另一個「自我」(如果resource_current> 100)? 爲什麼我需要'自我'?
因爲沒有它,你可能會聲明一個本地'resource_current'而不是從數據庫模式訪問由Rails生成的方法。 – 2013-03-09 20:01:33
好吧,我想代碼'resource_current + = amount'的第一行可以被解釋爲局部變量的聲明。但爲什麼我需要在第二種情況下使用'self'?爲什麼我不需要第一個條件? – balush 2013-03-10 10:00:22
logn故事簡介:它終於爲我工作,沒有奇怪的語法和無法解釋的錯誤 - 只能解釋我能想出的是我在測試過程中搞砸了一些東西 – balush 2013-05-12 11:33:48