0
私は、ユーザーがログインに生成されたセッション、持っている:。エリクシール/フェニックス変更セッションキー
defp sign_in(user, password, conn) do
if password == user.password do
conn
|> put_session(:current_user, %{id: user.id, username: user.username, role_id: user.role_id, language: 1})
|> put_flash(:info, "Signed in successfully!")
|> redirect(to: page_path(conn, :tableshow))
else
failed_login(conn)
end
end
と、ログイン時にデフォルトで1に割り当てられていることをキー「言語」しかし、のヘッダーにlayout/app.html.eexキーの値を2に変更するためのボタンを作成しようとしています。どのようにしてキーの値を変更できますか?私はPlug.Connを読んだことがありますが、まだ分かっていません:(基本的には、言語切り替えをしたいので、セッション "言語"キーが1の場合、2、中国語の英語になります。 事前に感謝!
ボタンは、単にコントローラのアクションでこれを実行する上でクリックされた構文update_map = %{current_map | :key_to_update => value}
を使用して、必要に応じ
お返事ありがとうございますが、私には1つの問題があります。このボタンが必要ですすべてのページのヘッダーにあり、layout/app.html.eexに入れて、どのコントローラを使うべきですか?私はコントローラで値を操作する方法を理解していますが、app.html.eexで必要なので、どのコントローラを使用するのかよくわかりません。どうぞお勧めですか? – Ilya
私は 'session controller'という新しいコントローラを作成してそこにコントローラのアクションを配置することをお勧めします。コントローラのアクションに' change_language'という名前を付けることができます – coderVishal