0

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

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 %> |

请解决这个问题。

4

2 回答 2

0

哪个文件是您所说的“评论视图”?能够呈现这样的集合

 <%= render @post.comments %>

你需要放置一个评论模板views/comments/_comment.html.erb

当然,您可以将其放入另一个部分,例如“posts/_comment.html.erb”,但您必须更加明确:

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

(注意文件名中有下划线,但传递给渲染的“部分路径”中没有)

于 2013-03-26T12:22:48.187 回答
0
<%= render @post.comments %>

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

我会认为您的评论视图views/comments被命名为show.html.erb. 尝试这样的事情:

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

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

于 2013-03-26T09:51:42.143 回答