RoR遍历一个组/ each_slice

时间:2017-08-28 19:13:32

标签: ruby-on-rails

我想要获取数组中的最后5个项目,但要单独显示每个项目,而不是作为一个组。

以下是我在下面尝试过但没有成功的事情。

@array = Town.all

<% @array.each_slice(5) do |a| %>
   <%= a.first %>
  <%= a.second %>
  <%= a.third %>
  <%= a.fourth %>
  <%= a.fifth %>
<% end %>

我无法弄清楚如何提取特定数量的物品,然后调用每个单独的物品。

2 个答案:

答案 0 :(得分:1)

您要查找的方法是in_groups_ofhttps://apidock.com/rails/Array/in_groups_of):

  <% @towns.in_groups_of(5) do |five_towns| %>
    <% five_towns.each do |town| %>
      # [...]
    <% end %>
  <% end %>

更新:也许你只想要数组的最后5个元素。如果是这样,您只需致电:

Town.all.last(5) 
# => array of (max) 5 Town records

答案 1 :(得分:0)

要获取数组的最后5项,您可以使用last,然后使用each进行迭代:

<%= @array.last(5).each do |a| %>
  ...
<% end %>

但似乎你想得到一个模型的最后5条记录;在这种情况下,你可以试试这个:

@array = Town.limit(5).order('id desc')

<%= @array.each do |a| %>
  ...
<% end %>
  

...有没有办法可以让我们说出a的最后5条记录   在一个循环内建模?也许

<%= @array.each do | a, b, c, d, e| %>
  <%= a.description %>
  <%= b.description %>
<% end %>

您可以使用每个项目的索引,而不是使用each;例如:

@last_five = @array.last(5)

<%= last_five[0] %>
<%= last_five[1] %>
<%= last_five[2] %>
<%= last_five[3] %>
<%= last_five[4] %>

虽然这不会是干的,但最好坚持使用each