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

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

Z Ruby Próbuję podzielić moją listę na 4 kolumny, ograniczając każdą kolumnę do 5; jednak ani krojenie, ani dzielenie nie działa. Jakieś wyobrażenie o tym, co robię źle? każda pomoc jest bardzo doceniana.Ruby on Rails Podział lub podzielenie listy na kolumny

Odpowiedz

10

Prawdopodobnie chcesz użyć in_groups_of:

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

Oto przykład użycia Ryan Bates z tej 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

Dzięki @shawn! To wystarczy! – nil

2

Czy coś takiego pasuje do twoich celów?

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

find_in_batches daje każdej partii rekordów, który został znaleziony przez opcji znaleźć jak tablicy.

+2

To działa, ale 'in_groups_of' jest chyba bardziej odpowiednie dla to zadanie. Od API (link do): Ta metoda jest przeznaczona tylko do przetwarzania wsadowego dużych ilości rekordów, które nie pasowałyby do wszystkich pamięci naraz. Jeśli potrzebujesz zapętlić mniej niż 1000 rekordów, prawdopodobnie lepiej będzie użyć zwykłych metod wyszukiwania. – Mischa