我的索引中有一个循环,它引用了我想要在表中显示的多个关联。目前我有以下内容,但是想知道是否有更好/更清洁的方法呢?
索引
<table>
<% @sales.each do |data| %>
<% data.selections.each do |selections| %>
<% data.operations.each do |operations| %>
<% data.indices.each do |indices| %>
<% data.snapshots.each do |snapshots| %>
<tr>
<td><%= data.id %></td>
<td><%= selections.type %></td>
<td><%= selections.name %></td>
<td><%= operations.title %></td>
<td><%= indices.item_id %></td>
<td><%= indices.item_name %></td>
<td><%= snapshots.location %></td>
<td><%= snapshots.name %></td>
</tr>
<% end %>
<% end %>
<% end %>
<% end %>
<% end %>
</table>
正如您所看到的,它非常混乱但工作正常。我希望这种疯狂有更好的方法。
答案 0 :(得分:1)
我想data.selections.size == data.operations.size == data.indices.size == data.snapshots.size
。在这种情况下,您可以在一个循环中完成所有操作:
<table>
<% @sales.each do |data| %>
<% data.selections.size.times do |i|
<tr>
<td><%= data.id %></td>
<td><%= data.selections[i].type %></td>
<td><%= data.selections[i].name %></td>
<td><%= data.operations[i].title %></td>
<td><%= data.indices[i].item_id %></td>
<td><%= data.indices[i].item_name %></td>
<td><%= data.snapshots[i].location %></td>
<td><%= data.snapshots[i].name %></td>
</tr>
<% end %>
<% end %>
</table>