好的,所以我正在使用 Awesome 嵌套集在 Rails 上使用嵌套评论系统。我目前正在实现一个递归函数来使嵌套工作(我知道这对于性能来说非常低效,但我只是希望它在我调整性能之前工作)。
所以在我的应用程序控制器中,我有这样的东西(构建 html):
def create_comments_list(comment, commentlist)
commentlist += "<div class=\"comment\" style=\"padding-left:20px;\"><div style=\"display:none;\" class=\"parent_id\">#{comment.id}</div>#{comment.user.name}:<br/><div class=\"ccontent\">#{comment.content}</div><br/><a href=\"#reply\" class=\"reply\" style=\"color:black;\">Reply</a>";
children = comment.children
children.each do |c|
create_comments_list(c, commentlist)
end
commentlist += "</div><div class=\"shortdivider\"> </div>"
commentlist
end
我像这样在控制器中调用:
@commentlist = create_comments_list(c, @commentlist)
它似乎在进行完全递归......但是在 1 个父评论和 1 个子评论的情况下,评论列表只会吐出父评论。如果我记录一些东西,我可以看到孩子确实被附加到递归调用中的@commentlist,但是当它展开到父输入递归的位置时,commentlist 变量不再包含孩子。看来我不了解这些变量的范围......我需要commentlist 在它从内部递归调用中解开后保留它的值。任何人都可以阐明一些光?(或者一些更好的方法?我的坏风格铃在我脑海里响起)