如何遍历acts_as_tree或祖先层次结构

时间:2015-01-01 08:45:05

标签: ruby-on-rails ancestry acts-as-tree

我想采用这样的结构,其中每个标头都有一个标题和项目数组:

header
  header
    \item
     item
     item
   header
     header
       item
header
  item
  item  

并将其变成这样的列表:

header
header
item
item
item
header
header
item
header 
item
item

我需要能够处理像6深的嵌套。现在,我只是做一个每个循环并检查它是否有项目或是否有标题?但我真的不希望有6个级别的这个 - 我想做一些循环但不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

我发现很多网站都指向一个现在处于离线状态的网站。 Lucky archive.org随时为您提供帮助! [link]

我已经实施了。帮手:

def find_all_subcategories(category)
  if category.children.size > 0
    ret = '<ul>'
    category.children.each { |subcat| 
      if subcat.children.size > 0
        ret += '<li>'
        ret += link_to subcat.name, subcat
        ret += find_all_subcategories(subcat)
        ret += '</li>'
      else
        ret += '<li>'
        ret += link_to subcat.name, subcat
        ret += '</li>'
      end
    }
    ret += '</ul>'
    ret.html_safe
  end
end

然后在视图中:

ul
  - for category in @categories
    li
      = link_to category.name, category
      = find_all_subcategories(category)

只需检查您用于模型的属性即可。就我而言,它是name

所以,也许迟到,但可以帮助别人。