簡體   English   中英

Ruby每個循環執行'n'次

[英]Ruby each do loop 'n' number of times

嗨,我在.erb視圖中遇到以下循環問題

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

這對於循環瀏覽我的列表很好,但是我只想循環瀏覽“ my_list”中的前4個項目,而不是整個列表。 我嘗試了一些類似的事情:

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

但似乎沒有用,因為我認為我的紅寶石知識至少可以說是!

像這樣使用Array#take

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

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 |  %>

顯然,您希望以四個為一組的順序遍歷列表(您確實應該修改問題,因為這是重要的信息)。 很明顯,您正在使用Rails。 幸運的是,Rails的in_groups_of已內置到ActiveSupport中:

<% 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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM