<% for product in @order.line_items -%>
<% total_price += (product.price * product.quantity) -%>
<tr>
<td><strong><%= product.item.description%></strong></td>
<td><%= product.item.category.category_name%></td>
<td><%= product.quantity%></td>
<td><%= product.price%></td>
</tr>
<% end -%>
如何将total_price保存到我的数据库?谢谢!
答案 0 :(得分:2)
在您的示例中,您正在视图中工作。视图不是为了操纵Data来显示数据。如果要添加一个为您提供总价的方法,可以将其添加到模型中:
def total_price
self.price*self.quantity
end
然后你可以在你的视图中这样称呼它:
<%= product.total_price %>
原则是您永远不会在数据库中存储可以从数据库中已有的其他字段计算的数据。
你也不应该使用for
循环。使用迭代,如:
<% @order.line_items.each do |product| %>
<%= stuff you do...... %>
<% end %>
如果你想要总和,你可以这样做:
@order.line_items.collect(&:total_price).sum
答案 1 :(得分:1)
您应该在Order
模型中添加一个计算订单总价的方法:
def total_price
line_items.sum('price * quantity')
end
你可以这样做:
@order.total_price
此方法的另一个优点是计算在数据库中完成。无需迭代所有订单项。