2016-10-12 64 views
2

我目前在控制器助手模块中具有以下代码。它允许我通过抓住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

为了澄清,您希望这样做,即使某人未通过表单验证,它也会重定向回到上一页(例如,不是表单页面)? –

回答

4

有关于这个话题,这导致你可能希望fancy small library一个discussion in phoenix issues包括在您的项目并使用这样的:

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

或以任何其他方式,它描述的自述/帮助。