我有一个 Rails 应用程序需要从多个位置更新某个对象。在这些更新之后,负责此更新的控制器应始终重定向回一个来自的位置。
这适用于redirect_to :back
,除非我来自标准edit
动作。然后它当然会引导我回到编辑表单,通常我希望使用标准的 Rails 方式来引导show
操作。
成功更新后传递参数重定向到哪里的解决方案?
我有一个 Rails 应用程序需要从多个位置更新某个对象。在这些更新之后,负责此更新的控制器应始终重定向回一个来自的位置。
这适用于redirect_to :back
,除非我来自标准edit
动作。然后它当然会引导我回到编辑表单,通常我希望使用标准的 Rails 方式来引导show
操作。
成功更新后传递参数重定向到哪里的解决方案?
正在重定向到 HTTP 标头“HTTP_REFERER”中包含的redirect_to :back
链接(包含在request
ActionDispatch::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