Ruby on Rails - Awesome nested set plugin

天大地大妈咪最大 提交于 2019-12-03 13:42:43

问题


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

Any advice appreciated.

Thanks.


回答1:


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>



回答2:


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




回答3:


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.



来源:https://stackoverflow.com/questions/2059920/ruby-on-rails-awesome-nested-set-plugin

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!