在rails中为特定模型添加注释?

时间:2013-05-31 08:05:45

标签: ruby-on-rails ruby-on-rails-3

目前我正在使用rails创建Blog,我想在帖子模型中添加评论。我正在使用acts_as_commentable,它在rails控制台上工作得很好但是当我尝试在MVC中实现它时,我感到困惑!我该如何为Post模型添加评论。

我该怎么办?是否需要为句柄注释创建任何新的控制器?

我想在post-gt; show视图下方添加评论表单,以便用户可以在帖子#show page上添加评论。

抱歉我的英文!

2 个答案:

答案 0 :(得分:2)

保罗建议使用acts_as_commentablepolymorphic-association

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

或在railscast上使用PRO帐户:http://railscasts.com/episodes/154-polymorphic-association-revised(回复:https://github.com/railscasts/154-polymorphic-association-revised/tree/master/blog-after

下面的一些修改后的代码,只有在Post加载@commentable时,此代码才会向@commentable = Post.find(params[:id])添加评论,如果您将通过教程,您将能够将评论添加到应用中用户和帖子共享相同评论模型的任何其他模型。

之前我在我的应用中使用了acts_as_commentable,很棒的宝石,但我现在使用的是polymorphic-association因为它可以更加自定义。

<强> post.rb

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

<强> comment.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 %>

<强> posts_controller

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

<强> comments_controller

  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

<强>的routes.rb

  resources :posts do
    resources :comments
  end

答案 1 :(得分:1)

正如您在acts_as_commentable文档中所看到的那样,

还要确保您具有创建数据库结构的迁移。

在你的模特中:

class Post < ActiveRecord::Base
  acts_as_commentable
end

通过您的评论,我看到您正在提供有关Rails的第一步。您需要创建控制器和视图。在您的控制器中,您需要初始化变量并调用尊重视图。 我最好的建议是,在开始做自己的博客之前,先看一下this Rails tutorial,它将涵盖你需要的大部分方面。