Ruby每个都做循环' n'次数

时间:2014-04-14 11:36:30

标签: ruby-on-rails ruby loops

您好我在.erb视图中遇到以下循环问题

<% my_list.each do | list | %>
.. loop stuff.....
<% end %.

这适用于循环浏览我的列表,但我只想循环浏览&#39; my_list&#39;中的前4项。而不是整个清单。我试过了一些像:

<% my_list.each do | product |  3.times %>

但似乎并没有起作用,因为我认为我的红宝石知识至少可以说是有限的!

4 个答案:

答案 0 :(得分:5)

像这样使用Array#take

<% my_list.take(4).each do | product | %>

答案 1 :(得分:2)

my_list Array#first获取前4个元素:

<% my_list.first(4).each do | product |  %>

使用Array#each_slice对您的数组进行切片

<% my_list.each_slice(4) do | products |  %>
  <% products.each do | product |  %>

答案 2 :(得分:2)

很明显,你想以四个一组的方式遍历你的列表(你真的应该修改你的问题,因为这是一个重要的信息)。很明显你使用的是Rails。幸运的是,Rails在ActiveSupport中内置了in_groups_of

<% my_list.in_groups_of(4) do |products| %>
  <% products.each do | product | %>

这种方法的一个优点(比each_slice之类的替代方案)是in_groups_of将填充结尾以确保始终获得四个组。它默认会填充nil,但您可以自己指定填充:

<% my_list.in_groups_of(4, "&nbsp;") do |products| %>

如果您将false作为打击垫传递,则它根本不会打开,其行为就像each_slice一样。

答案 3 :(得分:0)

<% my_list[0..3].each do | list | %>