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

时间:2016-10-12 18:47:18

标签: 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

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

1 个答案:

答案 0 :(得分:7)

该主题有一个discussion in phoenix issues,导致您可能想要包含在项目中的fancy small library并使用如下:

def redirect_back(conn, alternative \\ "/") do
  conn |> NavigationHistory.last_path(default: alternative)
end

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