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

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

Mit Ruby versuche ich meine Liste in 4 Spalten aufzuteilen und jede Spalte auf 5 zu begrenzen; jedoch scheint weder das Schneiden noch das Teilen zu funktionieren. Irgendeine Idee von dem, was ich falsch machen könnte? jede Hilfe wird sehr geschätzt.Ruby on Rails Spalten in Spalten aufteilen oder zerschneiden

Antwort

10

Sie wollen wahrscheinlich verwenden in_groups_of:

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

Hier Ryan Bates' Beispiel für die Verwendung von diesem Railscast:

<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

Danke @shawn! Das hat den Trick gemacht! – nil

2

Wäre so etwas wie das Folgende für Ihre Zwecke geeignet?

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

find_in_batches liefert jede Charge von Datensätzen, die von den Fund Optionen als Array gefunden wurde.

+2

Dies funktioniert, aber 'in_groups_of' ist wahrscheinlich besser geeignet für diese Aufgabe. Von der API (mit der Sie verknüpft sind): Diese Methode ist nur für die Stapelverarbeitung großer Mengen von Datensätzen vorgesehen, die nicht gleichzeitig in den Speicher passen. Wenn Sie nur weniger als 1000 Datensätze durchlaufen müssen, ist es wahrscheinlich besser, nur die regulären Suchmethoden zu verwenden. – Mischa