如何使用不同的控制器更新相同的型号?

时间:2013-11-24 19:22:56

标签: ruby-on-rails

我有一个大型模型,有大量的领域。我想将它们分成两个单独的页面,并将它们分开编辑。我最好喜欢在两个不同的控制器中处理A部分和B部分。

目前,页面B使用控制器中的“新建”和“编辑”方法,但仍然向页面A的控制器发布。我似乎无法强制它使用页面B的控制器。 ,当页面B上的字段验证失败时,我被重定向到页面A.

这是一个奇怪的问题,但如果有人有一些建议,我们将非常感激。

编辑:

在控制器A中(与模型相关):

@modA = ModelA.new(params[:model_a])
@modA.id = current_user.id

respond_to do |format|
  if @modA.save            
    format.html {redirect_to('/model_a/new', :notice => "ModelA successfully created.") }
  else
    format.html {render action: 'new'}
  end
end

这基本上就是所有需要的 - 如果我可以有条件地重定向到其他控制器的'编辑'或'创建'动作,我就会全部设定。

1 个答案:

答案 0 :(得分:0)

我打赌,在您对Page B的新页面和编辑页面的观看中,您正在执行form_for(@modA)之类的操作。这会自动使用与该模型一起使用的路由。您可以通过在浏览器中查看页面源代码中表单的action属性来确认这一点。

相反,您可以指定要使用的控制器和路由:

form_for(@modA, url: {controller: 'page_b', action: 'create'}) do
  ...

如果我的猜测不是您所拥有的,或者此建议无效,请发表您的观点。