循环索引中有多个关联

时间:2017-12-21 23:00:02

标签: ruby-on-rails ruby-on-rails-5

我的索引中有一个循环,它引用了我想要在表中显示的多个关联。目前我有以下内容,但是想知道是否有更好/更清洁的方法呢?

索引

<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>

正如您所看到的,它非常混乱但工作正常。我希望这种疯狂有更好的方法。

1 个答案:

答案 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>