在模板中传递默认参数的最佳方法

时间:2017-05-22 15:03:32

标签: elixir phoenix-framework

有时在我的模板中,当这些值没有作为渲染函数中的参数传递时,我想为某些CSS属性定义默认值,如下所示:

height: <%= if @height do %><%=@height%><% else %>"50px";<%end%>

我想知道是否有更好(更简洁)的方式。

1 个答案:

答案 0 :(得分:6)

您可以使用

这一事实
  1. @变量也可以通过名为assigns
  2. 的地图进行访问
  3. 使用括号语法访问地图中不存在的键,返回nil而不是引发异常,
  4. 如果左边的|| ,则
  5. nil会返回右侧值

    并写:

    <%= assigns[:height] || "50px" %>
    

    获得与if / else相同的行为。

    修改:如果您始终设置@height,即使值为nil,您也可以使用更少的代码执行此操作:

    <%= @height || "50px" %>
    

    即使@height未设置为任何值,上一代码仍然有效,但如果未设置@height,则会引发异常。