В вашей модели Предмета вы можете добавить метод промежуточных итогов:
def subtotal
quantity * price
end
Предполагая, что вы модель Заказа как отношение has_many с Предметом, вы можете map
коллекцию, чтобы получить список цен намодель заказа:
def subtotals
items.map do |i| i.subtotal end
end
Поскольку вы работаете в среде Rails, вы можете использовать метод activesupport sum
, чтобы получить итоговую сумму по модели заказа:
def total
subtotals.sum
end
илиесли вы предпочитаете собрать все это вместе:
def total
items.map do |i| i.subtotal end.sum
end
Тогда вы можете использовать промежуточные итоги по Item и total по Order в ваших представлениях.
Редактировать: представление может выглядеть следующим образом:
<% for item in @order.items %> <%= item.price %><br/><% end %>
<%= @order.total %>