2017-10-16 91 views
0

我的put_flash(conn)get_flash(conn)方法行为奇怪;当我使用重定向一切工作正常,但没有显示出来,当我尝试在控制器后面添加flash_msg凤凰1.3闪不出现

看起来消息存储在:phoenix_flash而不是:plug_session;有什么想法吗?

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") 

在你的方法,你添加的提示信息到conn,但在render您使用非更新了已传递给您的操作的一个。

其他的办法是分配给conn如果你想正确地传递数据render

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

render conn, "index.html" 
+0

谢谢!我怎么会错过它... 只是为了获得信息,为什么然后它出现在private.phoenix_flash? – Thib

+0

很不幸,很抱歉,我无法评论实施细节... –