Elixir/Phoenix EEx共享模板中的可选值

Pau*_*iro 4 elixir phoenix-framework

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

<a href="<=% @url %>" class="core Item <%= className %>">
Run Code Online (Sandbox Code Playgroud)
  • url 应该是强制性的 - 这是默认的(OK);
  • className应该是可选的 - 我不能成功,因为如果我在调用模板时没有包含它(<%= render MyProject.SharedView, "myTemplate.html", url:"logo2.png" %>)则会出错.我怎样才能做到这一点?

Gaz*_*ler 12

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

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

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

出于这个原因,您还应该考虑显式传递一个nil class_name(在此注释中建议):

<%= render MyProject.SharedView, "myTemplate.html", url:"logo2.png", class_name: nil %>
Run Code Online (Sandbox Code Playgroud)