脚手架生成的所有整数之和
Scaffold generated Sum of all Integers
大量未声明的变量让我抓狂。我创建了一个带有文本和整数的简单脚手架。如何求和所有整数?见图:
我只想总结一下"Watts"。我正在使用 Rails 4; Ruby2.1.3
我得到这个:undefined method 'all' for nil:NilClass
" 当我把这个代码放在我的 app/models/bathroom_accessory.rb
:
def total
@bathroom_accessory.all.sum(&:watts)
end
我是不是做错了什么?
您试图引用实例变量而不是所有附件的集合:
def total
BathroomAccessory.all.sum(&:watts)
end
另一种方法(没有全部):
def total
BathroomAccessory.sum(:watts)
end
为了这个问题,OP 理解这个调用很重要:
@bathroom_accessory.all.sum(&:watts)
是不正确的,因为 sum 是在 class 级别定义的,并且 @bathroom_accessory 被声明为实例变量。即使此代码不正确:
def total
@bathroom_accessory = BathroomAccessory.new
@bathroom_accessory.sum(:watts)
end
这最后一段代码将引发 NoMethodError 错误。
大量未声明的变量让我抓狂。我创建了一个带有文本和整数的简单脚手架。如何求和所有整数?见图:
我只想总结一下"Watts"。我正在使用 Rails 4; Ruby2.1.3
我得到这个:undefined method 'all' for nil:NilClass
" 当我把这个代码放在我的 app/models/bathroom_accessory.rb
:
def total
@bathroom_accessory.all.sum(&:watts)
end
我是不是做错了什么?
您试图引用实例变量而不是所有附件的集合:
def total
BathroomAccessory.all.sum(&:watts)
end
另一种方法(没有全部):
def total
BathroomAccessory.sum(:watts)
end
为了这个问题,OP 理解这个调用很重要:
@bathroom_accessory.all.sum(&:watts)
是不正确的,因为 sum 是在 class 级别定义的,并且 @bathroom_accessory 被声明为实例变量。即使此代码不正确:
def total
@bathroom_accessory = BathroomAccessory.new
@bathroom_accessory.sum(:watts)
end
这最后一段代码将引发 NoMethodError 错误。