Нашёл ещё один повод для восхищения Ruby :) Потребовалось мне расположить несколько записей из таблицы с товарами в виде небольшой таблицы размером две на три ячейки т.е. чтобы получился примерно такой результат:
| Таблица с товарами которая мне нужна |
|
Понятно что получить 6 записей из таблицы не проблема, но вот как их сгруппировать по две на ряд чтобы облегчить создание разметки? Я уже было приготовился писать велосипед, но тем не менее меня одолели сомнения: не может быть такого чтобы в Ruby или Rails не было бы какого-нибудь вспомогательного метода который бы умел группировать записи из массива или по крайней мере делать что-то подобное. И сомнения были не напрасными, буквально через несколько минут я наткнулся на метод #each_slice который делал всю грязную работу. Осталось лишь подключить библиотеку require ‘enumerator’ в контроллере и написать примерно такой код:
<table cellpadding="0" cellspacing="0">
<% @products.each_slice(2) do | product_row | %>
<tr>
<% product_row.each do | product | %>
<td>
<%= render :partial => 'product', :locals => {:product => product} %>
</td>
<% end %>
</tr>
<% end %>
</table>
Таким вот образом Ruby сэкономил мне пол часа времени :)
P.S.
Камень в сторону noobkit.com: noobkit.com почему то считает что такого метода не существует.
Вы сильно удивитесь, что станет с таблицей, если в @products будет нечетное количество элементов. Не придумывайте велосипед, пользуйте рельсовый #in_groups_of
Тоже вариант. Спасибо :) Он кстати построен на базе each_slice.