Вывод информации в виде N колонок

8 ноября 2008 00:03 | Комментарии

Нашёл ещё один повод для восхищения 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 почему то считает что такого метода не существует.

Тэги: ruby Tips
Будь всегда в курсе последних новостей блога подписавшись на новости в формате RSS. Присоединяйся!
* * *

Комментарии

8 ноября 2008 06:36 Комментарий от Антон

Вы сильно удивитесь, что станет с таблицей, если в @products будет нечетное количество элементов. Не придумывайте велосипед, пользуйте рельсовый #in_groups_of

Ответ:

Тоже вариант. Спасибо :) Он кстати построен на базе each_slice.

* * *

Добавить новый комментарий

*

(не будет опубликован) *

(если есть)

1. Проверьте комментарий перед отправкой
2. Все комментарии проходят модерацию перед публикацией в блоге