我正在尝试在Phoenix EEx共享模板(我重复使用的模板)中传递值。到目前为止,这么好,但现在我想使其中一些是强制性的,而另一些是可选的。例如:
<a href="<=% @url %>" class="core Item <%= className %>">
url
应该是必填项 - 这是默认值(OK); className
应该是可选的 - 我无法创建它,因为如果我在调用模板时不包含它
(<%= render MyProject.SharedView, "myTemplate.html", url:"logo2.png" %>
)
有一个错误。
我怎么能这样做?答案 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 %>