0

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

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

并使其成为这样的列表:

header
header
item
item
item
header
header
item
header 
item
item

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

4

1 回答 1

0

我发现很多网站都指向一个现在离线的网站。幸运的 archive.org 随时为您提供帮助![关联]

我已经实现了。帮手:

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

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

于 2015-11-11T10:34:46.640 回答