2017-08-28 129 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