目前我正在使用rails创建Blog,我想在帖子模型中添加评论。我正在使用acts_as_commentable,它在rails控制台上工作得很好但是当我尝试在MVC中实现它时,我感到困惑!我该如何为Post模型添加评论。
我该怎么办?是否需要为句柄注释创建任何新的控制器?
我想在post-gt; show视图下方添加评论表单,以便用户可以在帖子#show page上添加评论。
抱歉我的英文!
答案 0 :(得分:2)
acts_as_commentable
或polymorphic-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,它将涵盖你需要的大部分方面。