1

だから私は祖先の宝石を使ってコメントを入れ子にしています。返信、編集、作成、削除など、すべてが機能します。しかし、なんらかの理由で、コメント自体は、返信しているコメントの下にネストされません。代わりに、コメントのリストの最後になります。

コード

注:タスクには、カテゴリがタスクに属する多くのカテゴリがあります。

カテゴリー新方式

  def new
    @task = Task.find(params[:task_id])
    @task.comments.new(:parent_id => params[:parent_id])
  end

コメントヘルパー

module CommentsHelper
  def nested_comments(comments)
    comments.map do |comment, sub_comments|
      render(comment) + content_tag(:div, nested_comments(sub_comments), :class => 'nested_comments')
    end.join.html_safe
  end
end

コメントフォーム

<%= form_for ([@task, @task.comments.build]) do |f| %>
    <%= f.text_area :comment %>
    <%= f.hidden_field :parent_id%>
    <%= f.submit %>
<% end %>

新しいコメントに返信または投稿すると、ソースに次のように表示されます。

<div class="comment_23">

    <p>I am a comment</p>
    <div class="comment Info">
        Written by: Adam | 
        You can: <a href="/tasks/7/comments/new?parent_id=23">Reply To Comment</a> or
        <a href="/tasks/1/comments/23/edit">Edit Comment</a>  |
        <a href="/tasks/1/comments/23" data-method="delete" rel="nofollow">Delete Comment</a>
    </div>
</div>
<div class="nested_comments"></div><div class="comment_24">

    <p>I am another comment</p>
    <div class="comment Info">
        Written by: Adam | 
        You can: <a href="/tasks/7/comments/new?parent_id=24">Reply To Comment</a> or
        <a href="/tasks/1/comments/24/edit">Edit Comment</a>  |
        <a href="/tasks/1/comments/24" data-method="delete" rel="nofollow">Delete Comment</a>
    </div>
</div>
<div class="nested_comments"></div><div class="comment_25">

    <p>I am a reply to the first comment</p>
    <div class="comment Info">
        Written by: Adam | 
        You can: <a href="/tasks/7/comments/new?parent_id=25">Reply To Comment</a> or
        <a href="/tasks/1/comments/25/edit">Edit Comment</a>  |
        <a href="/tasks/1/comments/25" data-method="delete" rel="nofollow">Delete Comment</a>
    </div>
</div>
<div class="nested_comments"></div>

空の nested_comments div があるのはなぜですか? I am a test は I am a comment への返信ですが、ネストされたコメント div に含まれていないのはなぜですか?

4

0 に答える 0