У меня есть структура базы данных для категорий как id, name, parent_id
.
Пользователь может ввести категорию, и если у него нет родителя, поле parent_id
будет установлено на 0.
Мой вид - это базовый цикл, показанный здесь:
<% @categories.each do |category| %>
<tr class="<%= cycle('one', 'two') %>">
<td>
<%= indent(depth(category.id)) %>
<%= best_in_place category, :name %>
<%= link_to(image_tag('/images/delete.png', :class => 'delete'), "categories/delete/#{category.id}")%>
</td>
</tr>
<% end %>
Функция indent(depth(category.id))
- это просто способ определить глубину дочерней категории и добавить это множество для визуальных целей. http://d.pr/Ss8e
Моя проблема в том, что детей нет в списке их соответствующих родителей. Я не уверен, как идти об этом, любой совет? (group_by или другой цикл может быть?)
EDIT:
Извините, что не ясно. Структура БД у меня такая:
CATEGORIES
id, name, parent_id, user_id
ITEMS
id, name, category_id
Я хочу показать такие категории:
Parent1
Child1
Child2
Parent2
Child1
В настоящее время цикл перечисляет элементы на основе того, когда они были созданы, он не группирует их по parent_id, как я хотел бы