我正在学习rails。我想弄清楚以下内容:
<% @obj.{For each 3 records} do |records| %>
<%end %>
我如何为每3条记录实现这个?
我想做什么?我想在3列中显示数据。因此我正在使用一张桌子。每条记录都是一个表数据(<td><td>
)。在每3条记录之后,我需要打印<tr></tr>
。
非常感谢你的帮助
答案 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 %>