【问题标题】:Map.get(assigns, :key) returns nil instead of expected value in the viewMap.get(assigns, :key) 在视图中返回 nil 而不是期望值
【发布时间】:2016-12-30 18:52:36
【问题描述】:

在模板中:

<%= @key %>

模板渲染@key的值,这里一切正常。

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

Map.get(conn.assigns, :key)

给我nil。根据文档

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

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

更让我困惑的是,当我输入时

conn.assigns.key

视图中,它给了我想要的值。

【问题讨论】:

    标签: elixir phoenix-framework


    【解决方案1】:

    在模板中@conn.assignsassigns 是两个不同的东西。 assigns map 来自 EEx,是启用 @var 语法的原因。 conn.assigns来自plug,是不同plug中需要的数据的公共存储空间。 当您调用 Phoenix.Controller.render/3 时,您显式传递的赋值(作为最后一个参数)与 conn.assigns 合并,并作为 assigns 传递给模板,但 conn.assigns 不会更新为新值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-16
      • 2012-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多