Ruby on Rails - потрясающий плагин для вложенных множеств - PullRequest
5 голосов
/ 13 января 2010

Есть ли простой способ отобразить весь вложенный набор при использовании этого плагина? Что я хотел бы сделать, это отобразить неупорядоченный список корневых узлов с другим неупорядоченным списком внутри каждого дочернего элемента, который также содержит дочерние элементы и т. Д.

Любой совет приветствуется.

Спасибо.

Ответы [ 3 ]

4 голосов
/ 02 ноября 2011

Использование your_model.children будет требовать повторного попадания в базу данных каждый раз, когда она встречается, что не является предпочтительным.

Я создал помощника, который помогает генерировать вложенные теги ul и li только одним попаданием в базу данных. Вы можете изменить этот помощник для своих собственных нужд:

https://github.com/collectiveidea/awesome_nested_set/wiki/How-to-generate-nested-unordered-list-tags-with-one-DB-hit

4 голосов
/ 15 января 2010

Есть несколько способов сделать это. Самое простое - просто начать с корней и разобрать каждый узел и его дочерние элементы. Первое, что я хотел бы сделать, это сделать частичное для разметки узла:

_your_model.html.erb

<li>
  <%= your_model.name %>

  <% unless your_model.children.empty? %>
    <ul>
      <%= render your_model.children %>
    </ul>
  <% end %>
</li>

Затем отредактируйте ваше представление так, чтобы отображались первые корневые узлы:

<ul>
  <% YourModel.roots.each do |node| %>
    <%= render node %>
  <% end %>
</ul>
0 голосов
/ 28 декабря 2010

Вы можете получить весь набор одним запросом: Category.order("lft ASC")

И если у вас есть :depth столбец, вуаля! Один запрос на все это, просто напишите свой вид для использования: глубина.

...