2013-05-04 77 views
5
@locations = Location.all #current listing all 

@locations = Location.slice(5) or Location.split(5) 

对于Ruby,我试图将列表拆分为4列,每列限制为5列;然而,切片或分裂似乎都不起作用。任何想法,我可能做错了什么?任何帮助是极大的赞赏。Ruby on Rails将列表拆分成列或将列表切片列表

回答

10

你可能想使用in_groups_of:

http://railscasts.com/episodes/28-in-groups-of

下面是从railscast Ryan Bates的用法示例:

<table> 
<% @tasks.in_groups_of(4, false) do |row_tasks| %> 
    <tr> 
    <% for task in row_tasks %> 
     <td><%= task.name %></td> 
    <% end %> 
    </tr> 
<% end %> 
</table> 
+0

谢谢@shawn!这就是诀窍! – nil 2013-05-04 16:07:28

2

下面的内容适合您的用途吗?

Location.find_in_batches(batch_size: 5) do |group| 
    # code to work with these 5 elements 
end 

find_in_batches产生的记录每批,是由 查找选项作为数组找到。

+2

这工作,但'in_groups_of'可能更适合这个任务。从API(您链接到):此方法仅用于批量处理大量记录,这些记录不会一次装入内存。如果您只需循环少于1000条记录,则最好使用常规查找方法。 – Mischa 2013-05-04 15:44:24