2016-12-30 38 views
1

在模板返回零,而不是预期值:Map.get(受让人:钥匙)在视图

<%= @key %> 

模板呈现的@key价值,一切都在这里很好。

我要在相应的视图使用@key,但是

Map.get(conn.assigns, :key) 

给我nil。根据该文件

@实际上是转换@keyMap.get(assigns, :key)

那么,为什么上面的回报nil没有预期值的宏?

迷惑我还要多,当我在视图键入

conn.assigns.key 

,它给了我所期望的价值。

回答

3

在模板@conn.assignsassigns是两个不同的东西。 assigns地图来自EEx,它是启用@var语法的地方。 conn.assigns来自插件,是不同插头所需数据的通用存储空间。 当您拨打Phoenix.Controller.render/3时,您明确通过的分配(作为最后一个参数)将与conn.assigns合并,并以assigns的形式传递给模板,但conn.assigns未使用新值更新。