2

我看到了这个帖子

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>

这段代码工作得很好。但是,假设我想创建这些文件的副本,所以我可能正在制作一个 _half_categories_list.html.erb 而不是 _full_categories_list.html.erb ,它可能对代码做一些不同的事情。

如果我使用与上面在_full_categories_list.html.erb 中使用的代码类似的代码,它将继续调用_category.html.erb。

如何使用 _half_categories_list.html.erb 和 _half_category.html.erb 之类的文件而不是 _category.html.erb 来显示所有的猫、子猫和子子猫

半类别和完整类别只是名称,表明我在每个文件中都在做不同的事情。我希望这是有道理的。我想基本上复制上面链接中的代码功能,但使用 _half_category.html.erb 而不是 _category.html.erb 因为我试图在 _half_category.html.erb 文件中放置不同的功能。

4

1 回答 1

2

首先:有一种更简单的方法来编写 _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以您需要的特殊方式呈现类别。

于 2010-08-05T09:14:13.507 回答