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のコメント ビューの名前は だと思いますshow.html.erb。そのようなことを試してください:

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

UPD: 私の間違い: 正しいです。コメントに説明があります。

于 2013-03-26T09:51:42.143 に答える
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 に答える