我无法弄清楚如何在视图中混淆表值。我的视图中有一个左右列的表,并且只想对右列进行洗牌。
show.html.erb
<table>
<% @items.each do |item| %>
<tr>
<td><%= item.left %><td>
<td><%= item.right %><td>
</tr>
<% end %>
</table>
&#34;左&#34;和&#34;对&#34;在数据库中共享相同的主ID。关于如何只对一方进行洗牌的任何建议?谢谢!
答案 0 :(得分:1)
你可以使用shuffle
,这样做
<% shuffled_items = @items.shuffle %>
<% @items.each_with_index do |item, index| %>
<tr>
<td><%= item.left %><td>
<td><%= shuffled_items[index].right %><td>
</tr>
<% end %>
有关详细信息,请阅读此文档http://ruby-doc.org/core-1.9.3/Array.html#method-i-shuffle
答案 1 :(得分:0)
我认为最简单的方法是拥有2个阵列。
@items_left
和@items_right
例如:
items = Item.a_scope
@items_left = items
@items_right = items.pluck(:right).shuffle #if you are on > rails 3.2
# @items_left = items.pluck(:left) #if only that attribute is needed
所以你可以按如下方式使用它
<table>
<% @items_left.each_with_index do |item, i| %>
<tr>
<td><%= item.left %><td>
<td><%= @items_right[i] %><td>
</tr>
<% end %>
</table>