我正在尝试创建一个利用acts_as_commentable_with_threading gem 的表单。虽然我有工作代码,但它有几个问题。我主要担心的是我必须为可评论对象的 ID 创建一个 hidden_field。由于 gem 的内置方法 build_from,我怀疑有一种方法可以绕过它。如果你知道怎么做,请分享。目前,我的代码如下所示:
在我的印象控制器中,我有:
@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