rails awesome nested set показывает всех кошек, суб-кошек и суб-кошек - PullRequest
2 голосов
/ 05 августа 2010

Я видел этот пост

Ruby on Rails - Потрясающий плагин для вложенного набора

, но мне интересно, как сделать то же самое без использования узла?Мне также интересно, что именно этот узел делает в самом коде.

В моей папке просмотра категорий у меня есть _category.html.erb и _full_categores_list.html.erb.

_category.html.erb имеет следующий код, аналогичный приведенной выше ссылке.

<li>
  <%= category.name %>

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

_full_categories_list.html.erb имеет следующий код.

<ul>
  <% YourModel.roots.each do |node| %>
    <%= render node %>
  <% end %>
</ul>

Этот код работает отлично.Однако предположим гипотетически, что я хотел создать дубликаты этих файлов, поэтому вместо _full_categories_list.html.erb я, возможно, делал _half_categories_list.html.erb, который мог бы сделать что-то немного другое с кодом.

Если я использую похожий код, подобный тому, который я использовал выше в _full_categories_list.html.erb, он будет продолжать вызывать _category.html.erb.

Как я могу показать всех кошек, суб-кошеки sub sub cats, используя _half_categories_list.html.erb и файл типа _half_category.html.erb вместо _category.html.erb

. Полукатегория и полная категория - это просто имена, указывающие, что я что-то делаюразные в каждом файле.Я надеюсь это имеет смысл.Я хочу в основном дублировать функциональность кода по ссылке выше, но использовать _half_category.html.erb вместо _category.html.erb, потому что я пытаюсь поместить другую функциональность в файл _half_category.html.erb.

1 Ответ

2 голосов
/ 05 августа 2010

Во-первых: есть более простой способ написать _full_categories_list.html.erb, используя render, с опциями :partial и :collection.

<ul>
  <%= render :partial => :category, :collection => YourModel.roots %>
</ul>

Это эквивалентно _full_categories_list.html.erb, которое вы написали выше.

roots - это именованная область действия , предоставленная awesome_nested_set. Вы можете добавить больше областей в свои модели - например, именованную область действия с именем half_roots (см. Ссылку для получения информации о том, как).

Имея это в виду, _half_categories_list.html.erb можно записать следующим образом:

<ul>
  <%= render :partial => :half_category, :collection => YourModel.half_roots %>
</ul>

Затем вы можете использовать _half_category.html.erb для отображения категорий таким особым образом, как вам нужно.

...