我的expenses
列有:quantity
和unitcost
。总费用金额为:quantity * unit cost
。
woassets
have_many :expenses
。
我想显示asset
索引列表中每个asset
的总计。
这有效:
<% expensetotal = 0 %>
<% woasset.expenses.each do |expense| %>
<% expensetotal = expensetotal + (expense.quantity.to_i * expense.unitcost) %>
<% end %>
<td><%= expensetotal %></td>
但是,有更好的方法吗?
我尝试在expense total
模型中定义expense
,如下所示:
def expense_amount
"#{self.quantity} #{self.unit_price}"
end
然后在索引中:
<%= woasset.expenses.sum(:expense_amount)
但是,这没效果。
感谢您的帮助
答案 0 :(得分:0)
这应该有效
<td><%= woasset.expenses.map{|e| e.quantity * e.unitcost}.reduce(:+) %></td>
当然,最好将其提取到模型中
class Woasset
def total_expense
expenses.map{|e| e.quantity * e.unitcost}.reduce(:+)
end
end
<%= woasset.total_expense %>