我有会话,这些会话是在用户登录时生成的:
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,中文。 提前致谢!
答案 0 :(得分:1)
由于会话变量:current_user
只是一个地图,您需要使用语法
update_map = %{current_map | :key_to_update => value}
单击该按钮时,只需在控制器操作中执行此操作。
conn = put_session(conn, :current_user,
%{get_session(conn, :current_user) | language: lang_value})