在模板中:
<%= @key %>
模板呈现@key
的值,这里一切都很好。
我想在相应的视图中使用@key
,但是
Map.get(conn.assigns, :key)
给了我nil
。根据文件
的宏
@
实际上是一个将@key
翻译为Map.get(assigns, :key)
那么为什么上面的回报nil
不是预期值?
当我输入
时,更加困惑我conn.assigns.key
在视图中,它为我提供了所需的值。
答案 0 :(得分:3)
在模板中@conn.assigns
和assigns
是两回事。 assigns
地图来自EEx,是启用@var
语法的地图。 conn.assigns
来自插件,是不同插头所需数据的通用存储空间。
当您致电Phoenix.Controller.render/3
时,您明确传递的分配(作为最后一个参数)与conn.assigns
合并,然后将其作为assigns
传递给模板,但conn.assigns
未更新新的价值观。