Rails视图:shuffle table列

时间:2014-05-20 04:46:15

标签: ruby-on-rails ruby

我无法弄清楚如何在视图中混淆表值。我的视图中有一个左右列的表,并且只想对右列进行洗牌。

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。关于如何只对一方进行洗牌的任何建议?谢谢!

2 个答案:

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