评论没有显示在ruby on rails博客应用程序中

时间:2013-03-26 06:11:14

标签: ruby-on-rails blogs

我正在尝试在博客应用程序中显示评论者和评论体模型。但它没有显示。 这是注释控制器的代码。

class CommentsController < ApplicationController

  http_basic_authenticate_with :name => "dhh", :password => "secret", :only => :destroy

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

  def destroy
    @post = Post.find(params[:post_id])
    @comment = @post.comments.find(params[:id])
    @comment.destroy
    redirect_to post_path(@post)
  end

  def check
    @comment=Comment.all
  end
end

//评论模型

class Comment < ActiveRecord::Base
  belongs_to :post
  attr_accessible :body, :commenter
end

//发布模型

class Post < ActiveRecord::Base
  attr_accessible :content, :name, :title, :tags_attributes

  validates :name,  :presence=>true
  validates :title, :presence=>true,
                    :length=>{:minimum=>5}
  has_many :comments, :dependent=>:destroy
  has_many :tags

  accepts_nested_attributes_for :tags, :allow_destroy => :true,
    :reject_if => proc { |attrs| attrs.all? { |k, v| v.blank? } }
end

//评论视图

<p>
  <b>Commenter:</b>
  <%= comment.commenter %>
</p>

<p>
  <b>Comment:</b>
  <%= comment.body %>
</p>

<p>
  <%= link_to 'Destroy Comment', [comment.post, comment],
               :confirm => 'Are you sure?',
               :method => :delete %>
</p>

//发布视图

<p id="notice"><%= notice %></p>

<p>
  <b>Name:</b>
  <%= @post.name %>
</p>

<p>
  <b>Title:</b>
  <%= @post.title %>
</p>

<p>
  <b>Content:</b>
  <%= @post.content %>
</p>

<p>
  <b>Tags:</b>
  <%= join_tags(@post) %>
</p>

<h2>Comments</h2>
<%= render @post.comments %>

<h2>Add a comment:</h2>
<%= render "comments/form" %>

<br />
<%= link_to 'Edit Post', edit_post_path(@post) %> |
<%= link_to 'Back to Posts', posts_path %> |

请解决此问题。

2 个答案:

答案 0 :(得分:0)

<%= render @post.comments %>

不正确。您必须渲染部分而不是对象。

我认为views/comments中的评论视图名为show.html.erb。尝试类似的东西:

<%= @post.comments.map do |comment| %>
  <%= render 'comments/show', comment: comment %>
<%= end %>

UPD:我的错误:这是正确的,在评论中有描述。

答案 1 :(得分:0)

您称之为“评论视图”的文件是哪个?能够像这样呈现一个集合

 <%= render @post.comments %>

您需要将评论模板发布到views/comments/_comment.html.erb

当然你可以把它放到另一个部分,例如'posts / _comment.html.erb`但是你必须更加明确:

<%= render :partial => 'posts/comment', :collection => @post.comments %>

(请注意文件名中有下划线,但不能传递给渲染的'部分路径')