2011-03-03 4 views
0
<% form_for [commentable, Comment.new], :action => 'create', :remote => false do |f|%> 
<%=f.hidden_field :commentable_id, :value=> commentable.id %><br/> 
<%=f.hidden_field :parent_id, :value=>1 %><br/> 

とコントローラとの3のform_forアクション:のRailsのparams

def create(commentable) 
@commentable = commentable.find(params[:comment][:commentable_id]) 

私は私のfor_forで作成するアクションにcommentable型を渡すことができますどのように?おかげさまで コントローラに続いて

<%=f.hidden_field :commentable_type, :value=> commentable.class %><br/> 

@commentable = Object.const_get(params[:comment][:commentable_type]).find(params[:comment][:commentable_id]) 
+0

私はあなたがさらに助けをしたい場合はあなたの質問を再形成する必要があると思います、あなたのコードについてもっと分かち合うことができますか?あなたのコントローラの – tommasop

+0

を試してみてください。 '@commentable = Commentable.create(params [:comment] [:commentable_id])' –

答えて

1

あなたがコメント可能なモデルを持っている場合、コントローラにメソッドを作成するために明示的にオブジェクトを渡す必要はありません:

def create 
    @commentable = Commentable.find(params[:comment][:commentable_id]) 
    #more code 
end 

大文字のCはコメント可能です。

+0

ありがとうございます。 –

+0

なぜオブジェクト全体を渡すのですか?あなたはidを渡して後でオブジェクトをフェッチすることができます。 –

0

あなたドンあなたはすでにあなたが隠しフィールドを使用することができなかったものの線に沿って

commentable.class 

を使用する必要が

+0

もちろん、acts_as_commentable_with_threadingを使用していますが、Commentableクラスは存在しません。 –

関連する問題