我目前在控制器助手模块中有以下代码。它允许我通过抓住conn的引用来重定向回到上一页。这样做的问题是,如果表单上的输入无效,例如,conn的referrer将重置为当前页面。
def redirect_back(conn, alternative \\ "/") do
path = conn
|> get_req_header("referer")
|> referrer
path || alternative
end
defp referrer([]), do: nil
defp referrer([h|_]), do: h
如何将引荐来源保持在正确的上一页,以便即使出现类似无效输入的内容,我也可以使用它进行重定向?
答案 0 :(得分:7)
该主题有一个discussion in phoenix issues,导致您可能想要包含在项目中的fancy small library并使用如下:
def redirect_back(conn, alternative \\ "/") do
conn |> NavigationHistory.last_path(default: alternative)
end
或以任何其他方式,在其自述文件/帮助中描述。