0

現在、私は投稿モデルにコメントを追加したいレールを使用してブログを作成しています。私はacts_as_commentableを使用しています.Railsコンソールではうまく機能しますが、MVCで実装しようとすると混乱しました!! Post モデルにコメントを追加するにはどうすればよいですか。

私は何をすべきか ?ハンドル コメント用に新しいコントローラーを作成する必要はありますか?

post->show ビューの下にコメント フォームを追加して、ユーザーが posts#show ページにコメントを追加できるようにします。

私の英語でごめんなさい!

4

2 に答える 2

2

acts_as_commentableパウロが提案したように、またはpolymorphic-association

http://asciicasts.com/episodes/154-polymorphic-association

または railscasts の PRO アカウント: http://railscasts.com/episodes/154-polymorphic-association-revised (リポジトリ: https://github.com/railscasts/154-polymorphic-association-revised/tree/master/blog -後)

以下の少し変更されたコードでは、このコードを使用すると、Postでロード@commentableしたときにのみ にコメント@commentable = Post.find(params[:id])を追加できます。チュートリアルを進めると、User と Post が同じ Comment モデルを共有するアプリ内の他のモデルにコメントを追加できるようになります。 .

acts_as_commentable以前はアプリで使用していた素敵な宝石ですが、polymorphic-association今ははるかにカスタマイズ可能であるため、使用しています。

post.rb

  attr_accessible :content, :name
  has_many :comments, as: :commentable

コメント.rb

  attr_accessible :content
  belongs_to :commentable, polymorphic: true

show.html.erb

<h1>Comments</h1>  

<ul id="comments">  
  <% @comments.each do |comment| %>  
    <li><%= comment.content %></li>  
  <% end %>  
</ul>  

<h2>New Comment</h2>  
<%= form_for [@commentable, @comment] do |f| %> 
  <ol class="formList">  
    <li>  
      <%= f.label :content %>  
      <%= f.text_area :content, :rows => 5 %>  
    </li>  
    <li><%= f.submit "Add comment" %></li>  
  </ol>  
<% end %>

投稿コントローラー

def show
  @post = Post.find(params[:id])
  @commentable = @post
  @comments = @commentable.comments
  @comment = Comment.new
end

コメント_コントローラー

  def create
    @commentable = Post.find(params[:id])
    @comment = @commentable.comments.new(params[:comment])
    if @comment.save
      redirect_to @commentable, notice: "Comment created."
    else
      render :new
    end
  end

ルート.rb

  resources :posts do
    resources :comments
  end
于 2013-05-31T08:56:31.167 に答える
1

act_as_commentableのドキュメントでわかるように、

また、データベース構造を作成するための移行があることを確認してください。

あなたのモデルでは:

class Post < ActiveRecord::Base
  acts_as_commentable
end

あなたのコメントから、Rails の最初のステップを示していることがわかります。コントローラーとビューを作成する必要があります。コントローラーでは、変数を初期化し、関連するビューを呼び出す必要があります。あなたへの私の最善のアドバイスは、あなた自身のブログを始める前に、あなたが必要とするほとんどの側面をカバーするこのRailsチュートリアルを見てください.

于 2013-05-31T08:15:52.293 に答える