Elixir / Phoenix EEx共享模板

时间:2015-11-06 08:45:49

标签: elixir phoenix-framework

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

<a href="<=% @url %>" class="core Item <%= className %>">
  • url应该是必填项 - 这是默认值(OK);
  • className应该是可选的 - 我无法创建它,因为如果我在调用模板时不包含它 (<%= render MyProject.SharedView, "myTemplate.html", url:"logo2.png" %>) 有一个错误。 我怎么能这样做?

1 个答案:

答案 0 :(得分:10)

如果@class_name中不存在密钥,则使用assigns(按惯例变量应以snake_case编写)将会引发。

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

Phoenix 0.14.0 @company之前,如果未设置,则返回nil。它被改为提高,以便赋值是明确的(显式过隐式。)

出于这个原因,你还应该考虑显式传递一个nil class_name(正如this comment中所推荐的那样):

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