1

act_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
4

1 に答える 1

4

これが古い答えであることは知っていますが、この宝石のいくつかの側面をカバーする優れたチュートリアルは次のとおりです

子供の取り扱いには役立ちませんが、簡単に理解できます。

于 2013-05-09T20:08:59.947 に答える