我对Rails相当新,我有这两个模型......
class Invoice < ActiveRecord::Base
has_many :items
accepts_nested_attributes_for :items
...
end
class Item < ActiveRecord::Base
belongs_to :invoice
def self.total
price * quantity
end
...
end
...以及用于创建新发票记录及其相关项目的嵌套(!)表单。
但是,我发现很难对这些项目进行计算。例如,我想在每个项目旁边使用上面的total
方法为此项目添加total
。
不幸的是,它不起作用。在我的表格中,我把它放在每个项目旁边:
<%= @invoice.items.amount %>
源自我的控制器:
def new
@invoice = Invoice.new
3.times {@invoice.items.build}
end
它不断抛出错误undefined local variable or method price
我在这里缺少什么?
感谢您的帮助。
答案 0 :(得分:1)
你在Item上创建了一个类方法,当我认为你想要的是一个实例方法时。
class Item < ActiveRecord::Base
belongs_to :invoice
def total
price * quantity
end
...
end
你可以调用单个项目@item.total
,或者,如果你做了所有项目的总数,那么你需要做这样的事情:
class Item < ActiveRecord::Base
belongs_to :invoice
def self.total
all.collect { |item| item.price * item.quantity }
end
...
end
@invoice.items.total
希望有所帮助。