Search code examples
ruby-on-railsrubycommentsblogs

How do I render all Comments in a Rails view?


I am new to rails so go easy. I have created a blog. I have successfully implemented comments and attached them to each post. Now...I would like to display, in the sidebar, a list of the most recent comments from across all posts. I think there are two things involved here, an update to the comment_controller.rb, and then the call from the actual page. Here is the comments controller code.

class CommentsController < ApplicationController

  def create
    @post = Post.find(params[:post_id])
    @comment = @post.comments.create!(params[:comment])

    respond_to do |format|
      format.html { redirect_to @post}
      format.js
    end
  end
end

Solution

  • If you want to display all the comments from any post, in most recent order, you could do:

    @comments = Comment.find(:all, :order => 'created_at DESC', :limit => 10)
    

    And in the view you can do:

    <% @comments.each do |comment| -%>
        <p>
            <%= comment.text %> on the post <%= comment.post.title %>
        </p>
    <% end -%>