从FoosController #create重定向到BarsController #create

时间:2017-02-11 06:30:58

标签: ruby-on-rails forms http ruby-on-rails-4 model-view-controller

我在another answer中读到redirect_to不同控件的create操作是不好的做法。

我正在尝试在Create Foo and Bar上的表单中实现Foos#new按钮。

Foo使用表单中的信息,Bar可以使用Foo的ID Foo.find(params[:foo_id])来获取所需的Foo信息。对我来说,我应该做的事情是有道理的:

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

Foos#create

的末尾
  • 我是否犯了建筑错误?
  • 什么是更好的方式?
  • 如何将redirect_to告诉POST而不是GET?因为我现在想要GET
  • 时提交POST
  • 我应该使用concerns吗?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你想在创建Foo对象后创建一个Bar对象吗?我只是在Foo的create方法中这样做。

这样的东西
def create
    @foo = Foo.new(foo_params)
    if @foo.save
      @bar = Bar.new
      @bar.attribute1 = @foo.attribute_bar_needs
      @bar.save
    end
end

更好的是,如果需要在每个Foo对象之后创建一个bar对象,那么我在Foo模型中进行after_create回调,而不是在控制器中进行。