0

私はanother answerを読んで、別のコントローラのcreateアクションにはredirect_toアクションが悪いことを言っています。BoseController#create from FoosController#create

Create Foo and BarボタンをフォームにFoos#newに実装しようとしています。

Fooは、フォームからの情報を使用してBarは、それが必要Fooから情報を取得するためにFoo.find(params[:foo_id])FooのIDを使用することができます。私Foos#createの終わりに

if params['route_to']['bar'] 
    redirect_to controller: :bars, action: :create, foo_id: @foo.id 
else 
    redirect_to foos_path 
end 

:それは私のような何かを行うべきであると私には理にかなっています。

  • 私は建築ミスをしていますか?
  • もっと良い方法はありますか?
  • GETの代わりにredirect_toPOSTにするにはどうすればよいですか?今のところ、私が欲しいときにGETを提出していますPOST
  • concernsを使うべきですか?

答えて

1

私が正しく理解していれば、Fooオブジェクトを作成した後でBarオブジェクトを作成したいと思いますか?私はFooの作成メソッドでそれをやっています。

さらに良い
def create 
    @foo = Foo.new(foo_params) 
    if @foo.save 
     @bar = Bar.new 
     @bar.attribute1 = @foo.attribute_bar_needs 
     @bar.save 
    end 
end 

よう

何かバーオブジェクトは、すべてのFooオブジェクトの後に作成する必要がある場合は、その後、私の代わりにそれをやってのこれを行うにはFooモデルでafter_createコールバックを作ると思いますコントローラ。