2017-10-16 8 views
0

put_flash(conn)get_flash(conn) 방법이 이상하게 작동합니다. 리다이렉트를 사용할 때 모든 것이 정상적으로 작동하지만 뒤에 컨트롤러에 flash_msg을 추가하려고하면 아무 것도 나타나지 않습니다.피닉스 1.3 플래시가 보이지 않음

메시지가 :plug_session 대신 :phoenix_flash에 저장되는 것처럼 보입니다. 거기에 무엇이 잘못된지에 대한 아이디어가 있습니까?

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

당신은 파이프는 render 기능으로 플래시 메시지를 넣어 당신의 conn 필요 : 당신이 conn에 플래시 메시지를 추가

당신의 접근 방식에서
conn 
|> put_flash(:info, "Welcome : info") 
|> put_flash(:error, "Welcome : error") 
|> render("index.html") 

하지만 render 당신이 비 사용 귀하의 행동에 전달 된 것을 업데이트했습니다.

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

render conn, "index.html" 
+0

감사합니다 : 당신이 render에 정확하게 데이터를 전달하고자하는 경우

다른 방법은 conn에 할당하는 것입니다! 어떻게 내가 그것을 놓칠 수 있었는지 ... 정보를 위해서, 왜 private.phoenix_flash에 나타 ​​납니까? – Thib

+0

좋은 질문입니다. 불행히도 구현 세부 정보에 대해 의견을 말할 수 없습니다. –