2017-10-16 5 views
0

私のput_flash(conn)get_flash(conn)の方法が異常に動作しています。リダイレクトを使用するとすべて正常に動作しますが、コントローラの後ろにflash_msgを追加しようとすると何も表示されません。フェニックス1.3の​​フラッシュが表示されない

:plug_sessionの代わりに:phoenix_flashにメッセージが格納されているようです。そこに何が間違っているかについてのアイデア?

あなたはパイプにあなたが render関数にあなたのフラッシュメッセージを入れて、あなたの conn必要
def index(conn, _params) do 
    conn 
    |> put_flash(:info, "Welcome : info") 
    |> put_flash(:error, "Welcome : error") 
    render conn, "index.html" 
    end 

private: %{EverlearnWeb.Router => {[], %{}}, 
:phoenix_action => :index, 
:phoenix_controller => EverlearnWeb.PageController, 
:phoenix_endpoint => EverlearnWeb.Endpoint, 
:phoenix_flash => %{"error" => "Welcome : error", "info" => "Welcome : info"}, 
:phoenix_layout => {EverlearnWeb.LayoutView, :app}, 
:phoenix_pipelines => [:browser], :phoenix_router => EverlearnWeb.Router, 
:phoenix_view => EverlearnWeb.PageView, 
:plug_session => %{"_csrf_token" => "xxx", 
"phoenix_flash" => %{"info" => "Welcome back Thibaut, your are signed in !"}, 
"user_id" => 1}, :plug_session_fetch => :done} 

答えて

4

:あなたはconnにフラッシュメッセージを追加しましたが、renderであなたは、非使用しているあなたのアプローチでは

conn 
|> put_flash(:info, "Welcome : info") 
|> put_flash(:error, "Welcome : error") 
|> render("index.html") 

をあなたの行動に渡されたものを更新しました。

他のアプローチは、あなたがrenderに正しくデータを渡したい場合connに割り当てることであろう。

conn = 
    conn 
    |> put_flash(:info, "Welcome : info") 
    |> put_flash(:error, "Welcome : error") 

render conn, "index.html" 
+0

ありがとう!どのように私はそれを見逃すことができます... ちょうど情報のために、それはなぜprivate.phoenix_flashに現れますか? – Thib

+0

大きな質問ですが、残念ながら、私は実装の詳細についてコメントできません... –

関連する問題