开发者

Ruby on Rails - Awesome nested set plugin

开发者 https://www.devze.com 2022-12-16 20:28 出处:网络
Is there a simple way to display the entire nested set when using this plugin? What I would like to do is displa开发者_如何转开发y an unordered list of root nodes with another unordered list inside ea

Is there a simple way to display the entire nested set when using this plugin? What I would like to do is displa开发者_如何转开发y an unordered list of root nodes with another unordered list inside each child that also contains children and so on?

Any advice appreciated.

Thanks.


There are a few ways to do this. The simplest is to just start with the roots and parse each node and it's children. The first thing I'd do is make a partial for a the node markup:

_your_model.html.erb

<li>
  <%= your_model.name %>

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

Next edit your view so that the first root nodes are rendered:

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


Using your_model.children will require another hit on the database each time it is encountered which is not preferable.

I have created a helper which helps generate the nested ul and li tags with only one database hit. You can modify this helper for your own needs:

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


You can get the whole set with one query: Category.order("lft ASC")

And if you have :depth column, voila! One query for it all, just write your view to use :depth.

0

精彩评论

暂无评论...
验证码 换一张
取 消