Map.get(assign,:key)在视图中返回nil而不是期望值

时间:2016-12-30 18:52:36

标签: elixir phoenix-framework

在模板中:

<%= @key %>

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

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

Map.get(conn.assigns, :key)

给了我nil。根据文件

  

@实际上是一个将@key翻译为Map.get(assigns, :key)

的宏

那么为什么上面的回报nil不是预期值?

当我输入

时,更加困惑我
conn.assigns.key

视图中,它为我提供了所需的值。

1 个答案:

答案 0 :(得分:3)

在模板中@conn.assignsassigns是两回事。 assigns地图来自EEx,是启用@var语法的地图。 conn.assigns来自插件,是不同插头所需数据的通用存储空间。 当您致电Phoenix.Controller.render/3时,您明确传递的分配(作为最后一个参数)与conn.assigns合并,然后将其作为assigns传递给模板,但conn.assigns未更新新的价值观。