我正在使用 Sky Eagles 嵌套 gem here 。
我只允许深度为两深,并且我有一个保存前过滤器检查深度,但我似乎无法让它在 View 中限制它,所以客户甚至没有选项来选择它。我正在使用 View 助手,如下所示。
app/views/_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}" } %>
现在它总是返回嵌套集的所有级别,但我只想显示根节点,因为我只允许两个深度。我被困在这里,因为当我查看代码here时我只看到一个包含 root 的选项,这是事实,我对此表示同意。我尝试过这样做
<%= f.select :parent_id, nested_set_options(Category.roots.to_a, @category) {|i, level| "#{'-' * level} #{i.name}" if i.level < 1} %>
但是这一切所做的只是空白了级别小于两级的选项,我需要它实际上根本不返回它们。
那么,如何让nested_set_options仅返回根,而不返回任何具有深度的类别?提前致谢
最佳答案
我认为您在这里使用了错误的助手。 nested_set_options
的编写也是为了实际获取所有后代。我建议手动添加:
f.select :parent_id, Category.roots.collect {|c| [ c.name, c.id ] }
关于ruby-on-rails - 嵌套设置 Rails 应用程序,辅助方法未返回我需要的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10159251/