わかりましたので、Awesome ネストされたセットを使用して、レール上でネストされたコメント システムをいじっています。私は現在、ネスティングを機能させるために再帰関数を実装しています (パフォーマンスに関してこれが非常に非効率的であることはわかっていますが、パフォーマンスを調整する前にこれを機能させたいだけです)。
したがって、アプリケーションコントローラーには次のようなものがあります(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 変数には子が含まれなくなります。これらの変数のスコープを理解していないようです...内部再帰呼び出しから巻き戻された後、その値を保持するためにコメントリストが必要です。光を当てることができる人はいますか?(または、これを行うためのより良い方法がいくつかありますか?私の悪いスタイルのベルが頭の中で鳴っています)