Rails:对于每3条记录

时间:2017-08-04 16:56:20

标签: ruby-on-rails

我正在学习rails。我想弄清楚以下内容:

<% @obj.{For each 3 records} do |records| %>

<%end %>

我如何为每3条记录实现这个?

我想做什么?我想在3列中显示数据。因此我正在使用一张桌子。每条记录都是一个表数据(<td><td>)。在每3条记录之后,我需要打印<tr></tr>

非常感谢你的帮助

4 个答案:

答案 0 :(得分:2)

您可以使用each_slice并传递3作为参数:

<% @obj.each_slice(3) do |records| %>
  <%= records %> <!-- your code -->
<% end %>

您可以在每个组的末尾添加您需要打印的内容,例如:

[1,2,3,4,5,6,7,8,9].each_slice(3) do |element| 
  puts "#{element} group end"
end
# "[1, 2, 3] group end"
# "[4, 5, 6] group end"
# "[7, 8, 9] group end"

答案 1 :(得分:1)

你想重复三次吗?喜欢,也许:

<% 3.times do %>
  ....
  #using @obj.record
  ...
<%end %>

答案 2 :(得分:1)

您可以将in_groups_of用于以下数组:

[1 2 3 4 5 6 7 8 9 10].in_groups_of(3, false) do |group| 
  puts group
end

# [1, 2, 3]
# [4, 5, 6]
# [7, 8, 9]
# [10]

答案 3 :(得分:0)

我认为您正在寻找find_in_batches或可能in_batches

在您的控制器中,您可能会执行以下操作:

@foos = Foo.where(some: :condition)

然后在你看来:

<% @foos.in_batches(of: 3) do |foos_relation| %>
  ... do something with your relation of three foos
<% end %>