2016-10-12 16 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 

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