【发布时间】:2013-09-16 13:30:05
【问题描述】:
我有一个数组,其中包含这样的项目列表
arr = [
{:id=>1, :title=>"A", :parent_id=>nil},
{:id=>2, :title=>"B", :parent_id=>nil},
{:id=>3, :title=>"A1", :parent_id=>1},
{:id=>4, :title=>"A2", :parent_id=>1},
{:id=>5, :title=>"A11", :parent_id=>3},
{:id=>6, :title=>"12", :parent_id=>3},
{:id=>7, :title=>"A2=121", :parent_id=>6},
{:id=>8, :title=>"A21", :parent_id=>4},
{:id=>9, :title=>"B11", :parent_id=>2},
{:id=>10, :title=>"B12", :parent_id=>2},
...
]
如果parent_id 是nil,那么它应该是父节点,如果parent_id 不是nil,那么它应该在特定的父节点之下。
基于id 和parent_id,我想提供这样的回复:
-A
-A1
-A11
-A12
-A123
-A2
-A21
-B
-B1
-B11
-B12
如何生成上述回复?
谢谢
【问题讨论】:
-
这是一个 Rails 项目吗?
-
是的,它是一个 Rails 3.0.3 项目
-
你可以使用 github.com/stefankroes/ancestry 或 github.com/mceachen/closure_tree 这样的 gem,两者都可以生成嵌套哈希
-
感谢支持,是否可以在数据库中不添加任何字段的情况下生成它?
-
Closure_tree 与
parent_id列一起使用,您只需要设置一个额外的表并运行一个 rake 任务,请参阅 github.com/mceachen/closure_tree#installation
标签: ruby arrays performance algorithm tree