Rails:实现acts_as_commentable_with_threading表单

时间:2012-08-04 00:23:06

标签: ruby-on-rails acts-as-commentable

我正在尝试创建一个利用acts_as_commentable_with_threading gem的表单。虽然我有工作代码,但它有一些问题。我主要担心的是我必须为可评论对象的id创建一个hidden_​​field。我怀疑有一种方法可以绕过这个因为gem的内置方法build_from。如果您知道如何操作,请分享。目前,这是我的代码的样子:

在我的Impressions控制器中,我有:

@impression = @book.impressions.find_by_user_id(user)
@new_comment = Comment.build_from( @impression, current_user.id, "" )

在我看来,我有:

<%= form_for @new_comment, :remote => true do |f| %>
  <%= f.text_area :body %>
  <%= f.hidden_field :commentable_id, :value => @impression.id %>
  <%= f.submit 'Submit' %>
<% end %>

在评论控制器中我有:

def create
  @comment = Comment.build_from( Userimpression.find(params[:comment][:commentable_id]), current_user.id, params[:comment][:body] )
  @comment.save
end

在评论模型中:

def self.build_from(obj, user_id, comment)
  c = self.new
  c.commentable_id = obj.id
  c.commentable_type = obj.class.base_class.name
  c.body = comment
  c.user_id = user_id
  c
end

1 个答案:

答案 0 :(得分:4)

我知道这是一个陈旧的答案,但是一个涵盖这个宝石的几个方面的好教程是:http://twocentstudios.com/blog/2012/11/15/simple-ajax-comments-with-rails/

对孩子们的处理没有帮助,但很容易理解。