У меня есть таблица, в которой цены аренды продукта в таблице указаны как number_to_currency(product.heritable_rental_price.to_f * product.quantity.to_f)
, из модели продукта, где процент получен из значения по умолчанию и рабочего значения, доступного для этого продукта:
def heritable_rental_price
if rental_price.present?
return rental_price
elsif working_value.present?
return (working_value || 0.0) * heritable_rental_price_percentage / 100
else
return nil
end
end
Я использую Обрабатываю ноль как функцию нуля в сумме как модель для решения этой проблемы.
def rental_price_sum
self.map(&:heritable_rental_price).compact.sum
end
Вот как это выглядит в представлении:
<tr>
<td>
<% if product.heritable_rental_price.present? %>
<%= number_to_currency(product.heritable_rental_price.to_f * product.quantity.to_f) %>
<% else %>
---
<%end%>
</td>
<td>
</tr>
<tr>
<td>
<% if product.heritable_rental_price.present? %>
<%= number_to_currency((product.rental_price_sum.to_f * product.quantity.to_f).reduce(0, :+)) %>
<% else %>
---
<%end%>
</td>
</tr>
Что касается вещей, которые я тоже пробовал, я смог вывести сумму предварительно определенного :working_value
, добавив .sum [: working_value] в конец, но пока не этот, пока (так как это определено в модели, я не могу вытащить его на Sym
)
Total Working Value: <%=number_to_currency(category.products_by_warehouse_id(params[:id]).sum(:working_value)) %>