我正在从几个不同模型的几个不同变量中访问属性。我正在尝试找到在表格中显示这些属性的最佳方法,并且在我的视图中我得到了一些不需要的重复。这是我表格的相关部分。
<% @list_items.each do |l| %>
<% @i_items.each do |i| %>
<% @details.each do |d| %>
<% @vends.each do |v| %>
<tr>
<td><%= d.product %></td>
<td><%= d.brand %></td>
<td><%= d.details %></td>
<td><%= i.price %></td>
<td><%= v.name %></td>
<td><%= v.address %></td>
<td><%= button_to "Delete", {:controller => :list_items,
:action => 'destroy',
:id => l.id},
:method => :delete %></td>
</tr>
<% end %>
<% end %>
<% end %>
<% end %>
这目前复制了我想要查看4x的行(大概是因为我有4个do
块正在进行并且我没有正确使用它们来实现我的目标。任何关于如何使这个工作的提示和我是do
- 错了(对不起自己)?还有一些关于如何比我使用4个变量的愚蠢方式干净利落的建议?提前谢谢!
答案 0 :(得分:2)
所以我从中得到的是你想要一次迭代这4个列表吗?如果这是问题,请执行以下操作:
<% 0.upto(@list_items.count) do |i| %>
<tr>
<td><%= @details[i].product %></td>
<td><%= @details[i].brand %></td>
<td><%= @details[i].details %></td>
<td><%= @i_items[i].price %></td>
<td><%= @vends[i].name %></td>
<td><%= @vends[i].address %></td>
<td><%= button_to "Delete", {:controller => :list_items,
:action => 'destroy',
:id => @list_items[i].id},
:method => :delete %></td>
</tr>
<% end %>
这假设所有数组都是相同的长度,并且该顺序没有被改变。这不是一个真正安全的想法,重新设计你的模型可能是值得研究的东西。
答案 1 :(得分:1)
感谢@kristenmills的建议,我意识到我已经有了必要的关联,可以用下面的代码干净利落地做到这一点。如果我发布了所有关联并给出了更多背景信息,那么有人可能会指出这一点。
<% @list_items.each do |l| %>
<tr>
<td><%= l.item.product %></td>
<td><%= l.item.brand %></td>
<td><%= l.item.details %></td>
<td><%= l.inventory_item.price %></td>
<td><%= l.inventory_item.vendor.name %></td>
<td><%= l.inventory_item.vendor.address %></td>
<td><%= button_to "Delete", {:controller => :list_items,
:action => 'destroy',
:id => l.id},
:method => :delete %></td>
</tr>
<% end %>