因为要实现树展现,当然用非递归也可以的,不过考虑灵活性和维护简便还是用递归实现,以下的例子是在helper中使用的,不过rails的输出始终让我有点找不到北,毕竟在webwork中如果实在要输出依然可以通过response得到输入流的,但rails似乎没有,于是只能用如下如此愚蠢的方法实现了:
protected
@@body=""
def build_tree(father_id=0,level=1)
@trees=Site.find(:all,:conditions => "father_id=#{father_id}")
@trees.each do |tree|
@t=""
(level-1).times do
@t+="++"
end
@@body +=" #{@t}#{tree.tree_name}(#{tree.id})<br/>"
build_tree(tree.id,level+1)
end
return @@body
end
最后结果灭有问题,但这样用返回类变量方法总不是太好,还米有想出特别好的解决方案只能先如此了。接下来要实现js的权限菜单也会采用此法。
protected
@@body=""
def build_tree(father_id=0,level=1)
@trees=Site.find(:all,:conditions => "father_id=#{father_id}")
@trees.each do |tree|
@t=""
(level-1).times do
@t+="++"
end
@@body +=" #{@t}#{tree.tree_name}(#{tree.id})<br/>"
build_tree(tree.id,level+1)
end
return @@body
end
最后结果灭有问题,但这样用返回类变量方法总不是太好,还米有想出特别好的解决方案只能先如此了。接下来要实现js的权限菜单也会采用此法。