【问题标题】:Optional values in Elixir/Phoenix EEx shared templatesElixir/Phoenix EEx 共享模板中的可选值
【发布时间】:2015-11-09 23:27:21
【问题描述】:

我正在尝试在 Phoenix EEx 共享模板(我重复使用的模板)中传递值。到目前为止,一切都很好,但现在我想让其中一些是强制性的,而另一些则是可选的。例如:

<a href="<=% @url %>" class="core Item <%= className %>">
  • url 应该是强制性的 - 这是默认设置(OK);
  • className 应该是可选的 - 我不能这样做,因为如果我在调用模板时不包括它 (&lt;%= render MyProject.SharedView, "myTemplate.html", url:"logo2.png" %&gt;) 有一个错误。 我该怎么做?

【问题讨论】:

    标签: elixir phoenix-framework


    【解决方案1】:

    如果assigns 中不存在密钥,则使用@class_name(按照约定,变量应写在snake_case 中)将引发。

    您可以使用assigns[:class_name],如果未设置assigns 中不存在的密钥,则不会引发。

    Phoenix 0.14.0 之前的@company 如果未设置则返回 nil。它被更改为 raise 以便分配是显式的(显式而不是隐式)。

    因此,您还应该考虑显式传递一个 nil 类名(如this comment 中所建议的那样):

    <%= render MyProject.SharedView, "myTemplate.html", url:"logo2.png", class_name: nil %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-19
      • 2015-08-22
      • 2016-02-06
      • 1970-01-01
      相关资源
      最近更新 更多