我在这里使用 Sky Eagles 嵌套镶嵌宝石。
我只允许深度为两深,并且我有一个保存前过滤器检查深度,但我似乎无法让它在视图中限制它,所以客户甚至没有选择的选项它。我正在使用所描述的视图助手,如图所示。
应用程序/视图/_form.html.erb
<%= form_for(@category) do |f| %>
<p>
<%= f.label(:name) %>
<%= f.text_field :name %>
</p>
<p>
<%= f.label(:parent_id) %>
<%= f.select :parent_id, nested_set_options(Category.roots.to_a, @category) {|i, level| "#{'-' * level} #{i.name}" } %>
</p>
<p>
<%= f.submit("Submit") %>
</p>
<% end %>
我主要感兴趣的是这个
<%= f.select :parent_id, nested_set_options(Category.roots.to_a, @category) {|i, level| "#{'-' * level} #{i.name}" } %>
现在它总是返回嵌套集的所有级别,但我只希望显示根节点,因为我只允许两个深度。我被困在这里,因为当我在这里查看代码时,我只看到一个包含 root 的选项,这是真的,我可以接受。我试过这样做
<%= f.select :parent_id, nested_set_options(Category.roots.to_a, @category) {|i, level| "#{'-' * level} #{i.name}" if i.level < 1} %>
但这所做的只是将级别低于 2 的选项排除在外,我需要它实际上根本不返回它们。
那么,如何让 nested_set_options 只返回根,而不是任何具有深度的类别?提前致谢