2017-08-28 130 views
1

我正在寻找获取数组中的最后5个项目,但要单独显示每个项目,而不是作为一个组。RoR遍历一个组/ each_slice

以下是我在下面试过但没有成功。

@array = Town.all 

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

我不知道如何拉出特定数量的物品,然后调用每个单独的物品。

回答

0

得到最后5个项目的阵列的你可以使用last,然后用each遍历他们:

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

但似乎你想要得到的最后5种记录模式;在这种情况下,你可以改为尝试这个办法:

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

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

...有我能有让我们说都在一个循环中的最后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

+0

感谢您的支持。我遇到的问题是我试图在不重新启动循环的情况下获取每个''@ array'''。因此,在这种情况下,我们可以通过一个循环来说明模型的最后5条记录吗?也许'''<%= @ array.each do | a,b,c,d,e | %><%= a.description%><%= b.description%><% end %>''' - 希望有道理。 – dgreen22

+0

@ dgreen22你是否建议你想循环遍历每个5个组并对该组进行一些操作? –

+0

@ dgreen22您可以使用_index_元素直接访问每个元素;检查更新的答案。 – Gerry

0

你正在寻找的方法是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