2011-07-26 8 views
1

後続のフォームの提出を試みています。物事を明確にする - その@postが作成されるとRails 3の後続フォームの提出(最初に2番目に依存する)

  • 私は@post
  • ためのフォームを提出し、その後、私はすぐに(フードの下)@associationsのためのフォームを提出したいと思います。
  • キャッチは、この2番目のフォームの送信には、新しく作成した@postのpost_idフィールドが必要です。

これを達成するにはどうすればよいでしょうか?ネストされたフォームは、新しく作成された@ post.idをプルするのに役立ちますか?親切に私にこれを手伝ってください。

+0

こんにちは、私はあなたがそうするべきではないと思います。 POSTは、ブラウザが実際に何かをサーバーにPOSTする、サーバーに対するブラウザのアクションを表すものとします。あなたが望むのは、最初のフォームを送信した後のチェーンアクションです。もっと正確な答えを得るためにもう少し文脈を与えることができますか? –

+0

お返事ありがとうございます。 @postという言葉は混乱を招いたと思います。私はそれによって "ポスト"というモデルを意味しました。だから私は "投稿"モデルで新しいエントリを作成するとき、私は後で関連付けモデルのための新しいレコードで新しく作成されたpost_idフィールドを使用する必要があります。これが明確になることを願っています。私がこれをどのように達成できるか教えてください。 – rgoraya

+0

実際に、「私はすぐに(ボンネットの下で)@associationsのフォームを提出したい」というメッセージは、「投稿」トラックに私を送りました。フォームを送信すると、通常は**私たちが話しているPOST約。 –

答えて

1

これはあなたがPostを作成するたびに起こるべきものであるならば、あなたはそれを達成するために、アクティブコールバックを使用する必要がありますが:

class Post < ActiveRecord::Base 

    after_create do |post| 
    # create your association using post.id 
    end 

end 

か、あなたもそのようにそれを書き込むことができます。

class Post < ActiveRecord::Base 

    after_create :after_create_post 

    def after_create_post 
    # create your association using self.id 
    end 

end 

それ以外の場合は、これがコントローラアクションに固有のものであれば、次のような簡単な操作を行う必要があります。

class PostsController < ApplicationController 

    def create 
    @post = current_user.posts.build(params[:post]) 
    # then use the @post.id to build your association. something like 
    @post.associations.build(:prop1 => 'value1', :prop2 => 'value2') 
    end 

end 

希望すると便利です!

+0

@Dominicに感謝します! – rgoraya

関連する問題