1

我有一个 Rails 应用程序需要从多个位置更新某个对象。在这些更新之后,负责此更新的控制器应始终重定向回一个来自的位置。

这适用于redirect_to :back,除非我来自标准edit动作。然后它当然会引导我回到编辑表单,通常我希望使用标准的 Rails 方式来引导show操作。

成功更新后传递参数重定向到哪里的解决方案?

4

1 回答 1

1

正在重定向到 HTTP 标头“HTTP_REFERER”中包含的redirect_to :back链接(包含在requestActionDispatch::Request 对象的变量中)。

您可以测试包含此引用的内容并对某些值的行为有所不同:

def update
  @object = MyObject.find(params[:id])
  # etc...

  if request.env['HTTP_REFERER'].present? 
    if request.env['HTTP_REFERER'].include?('/some/path/to/edit/')
      redirect_to object_path(@object)
    else
      redirect_to :back
    end
  else
    redirect_to root_path
  end
于 2013-08-14T15:16:13.413 回答