无效输入后如何重定向回上一页

Joe*_*cca 5 elixir phoenix-framework

我目前在控制器助手模块中有以下代码.它允许我通过抓住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
Run Code Online (Sandbox Code Playgroud)

如何将引用者保存到正确的上一页,以便即使出现类似无效输入的内容,也可以使用它进行重定向?

Ale*_*kin 7

有一个在凤凰问题的讨论的话题,这导致了花哨的小型图书馆,你可能要包括到您的项目,并使用这样的:

def redirect_back(conn, alternative \\ "/") do
  conn |> NavigationHistory.last_path(default: alternative)
end
Run Code Online (Sandbox Code Playgroud)

或以任何其他方式,在其自述文件/帮助中描述.