目前我正在使用 Rails 创建博客,我想在其中添加评论到帖子模型。我正在使用acts_as_commentable,它在rails控制台上效果很好,但是当我尝试在MVC中实现它时,我很困惑!如何向 Post 模型添加评论。
我该怎么办 ?是否需要创建任何新的控制器来处理评论?
我想在 post->show 视图下方添加评论表单,以便用户可以在 posts#show 页面上添加评论。
对不起我的英语不好 !
目前我正在使用 Rails 创建博客,我想在其中添加评论到帖子模型。我正在使用acts_as_commentable,它在rails控制台上效果很好,但是当我尝试在MVC中实现它时,我很困惑!如何向 Post 模型添加评论。
我该怎么办 ?是否需要创建任何新的控制器来处理评论?
我想在 post->show 视图下方添加评论表单,以便用户可以在 posts#show 页面上添加评论。
对不起我的英语不好 !
acts_as_commentable
正如保罗建议的那样或polymorphic-association
http://asciicasts.com/episodes/154-polymorphic-association
或在 railscasts 上使用 PRO 帐户:http ://railscasts.com/episodes/154-polymorphic-association-revised (repo: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
显示.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 %>
post_controller
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
正如您在acts_as_commentable文档中看到的那样,
还要确保您具有创建数据库结构的迁移。
在您的模型中:
class Post < ActiveRecord::Base
acts_as_commentable
end
通过您的评论,我看到您正在迈出 Rails 的第一步。您需要创建控制器和视图。在您的控制器中,您需要初始化变量并调用相关视图。我给你的最好建议是,在开始写自己的博客之前,先看看这个 Rails 教程,它将涵盖你需要的大部分方面。