рельсовое происхождение получит всех последних детей на root - PullRequest
0 голосов
/ 16 января 2020

У меня есть эта запись в классе папок

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" и "мой folder2"

Ответы [ 2 ]

1 голос
/ 19 января 2020

Итак, вы в основном хотите получить все конечные узлы, верно?

Вы можете сделать это, перебирая всех потомков и отклоняя узлы с дочерними элементами. Возможно, это не самое эффективное решение, но оно будет работать.

 - folder.descendants.reject(&:has_children?).each do |sub|
   div.col
    div.form-group
     = sub.name

Кстати, использование метода indirects неправильно для деревьев с level = 2, потому что в этом случае вы ' буду отвергать прямых детей root, которые в данном случае тоже являются листами.

0 голосов
/ 17 января 2020
- folder.indirects.each do |sub|
  - if sub.children.blank?
    div.col
      div.form-group
       = sub.name

я использую, если да, я могу избавиться от другой папки

...