【发布时间】:2014-02-08 00:24:22
【问题描述】:
我正在尝试在我的一个视图中创建一个表,该表在一行中显示来自两个单独散列的值的组合。所需的输出将包含三列:材料、单位和净重。
在我的控制器中,我像这样生成哈希:
@materialGroups = @shipment.shipmentDetails.count(:group => :product_name)
@materialTotals = @shipment.shipmentDetails.group(:product_name).sum(:net_weight)
@materialGroups 包含产品名称和每个产品的单位数 @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 中只有 Steel),这一切都可以正常工作。但是,如果我在 ShipmentDetails 中有多个产品名称(即钢和铜),我会在表中为每个产品名称获得重复的行。因此,我没有使用 20 个单位 @ 净重 200 磅的钢排,而是得到两排相同的排。铜的两行相同。
怎么做:
- 在视图中正确遍历两个哈希?
- 或者,或者,只生成一个哈希并对其进行迭代以获得所需的结果?
【问题讨论】:
标签: html ruby-on-rails hash view html-table