我在文件夹类中有这条记录
Folder 1 = parent id: root
sub folder 1 = parent id: Folder 1
secret file1 = parent id: Folder 1/sub folder 1
my folder1 = parent id: Folder 1/ sub folder 1/ secret file1
Folder 2
sub folder 2 = parent id: Folder 2
secret file2 = parent id: Folder 2/sub folder 2
my folder2 = parent id: Folder 2/ sub folder 2/ secret file2
现在我的 HTML 中有这个
- folder.indirects.each do |sub|
div.col
div.form-group
= sub.name
我变得像这样
机密文件1
我的文件夹1
机密文件2
我的文件夹2
但我的目标是获得"我的文件夹1"和"我的文件夹2">
所以你基本上想得到所有的叶节点,对吧?
您可以通过遍历所有后代并拒绝带有子节点的节点来实现此目的。它可能不是性能最高的解决方案,但它会起作用。
- folder.descendants.reject(&:has_children?).each do |sub|
div.col
div.form-group
= sub.name
顺便说一句,对于级别 = 2 的树,使用indirects
方法是错误的,因为在这种情况下,您将拒绝根的直接子级,在这种情况下也是叶子级。
- folder.indirects.each do |sub|
- if sub.children.blank?
div.col
div.form-group
= sub.name
我使用,如果这样我可以删除另一个文件夹