Я пытаюсь создать таблицу в одном из моих представлений, которая отображает комбинацию значений из двух отдельных хэшей в одной строке. Желаемый результат будет иметь три столбца: материал, единицы и вес нетто.Отображение значений из двух хэш-таблиц в одной таблице html
В моем контроллере я генерировать хэш следующим образом:
@materialGroups = @shipment.shipmentDetails.count(:group => :product_name)
@materialTotals = @shipment.shipmentDetails.group(:product_name).sum(:net_weight)
@materialGroups содержит PRODUCT_NAME и подсчет числа единиц для каждого продукта @materialTotals содержит PRODUCT_NAME и сумму net_weights для каждого продукт.
Мой взгляд содержит следующий код для отображения таблицы:
<table class="table">
<th>Material</th>
<th>Units</th>
<th>Net Weight</th>
<% @materialGroups.each do | product_name, count| %>
<% @materialTotals.each do | ship_net_weight, sum | %>
<tr>
<td><%= product_name %></td>
<td nowrap="true"><%= number_with_delimiter(count) %></td>
<td nowrap="true"><%= number_with_delimiter(sum) %> lbs</td>
</tr>
<% end %>
<% end %>
</table>
Это все работает отлично, пока только одна группа product_name возвращается (т. Е только сталь была в ShipmentDetails). Однако, если у меня есть более одного product_name (т. Е. Steel and Copper) в ShipmentDetails для отправки, я получаю повторяющиеся строки в таблице для каждого product_name. Поэтому вместо того, чтобы иметь один ряд для стали с 20 единицами @ вес нетто 200 фунтов, я получаю две одинаковые строки. И две одинаковые строки для Copper.
Как можно:
- итерацию по два хэш-х правильно с точки зрения?
- Или поочередно генерировать только один хэш и перебирать его для получения желаемого результата?
Спасибо! отлично работает, только заметьте, что мне пришлось добавить предложение as для подсчета (*) и sum (net_weight), чтобы получить доступ к значениям. – user2967603