有时,在我的模板内部,当某些CSS属性未作为渲染函数中的参数传递时,我想为它们定义默认值,例如:

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


我想知道是否有更好的方法(不太冗长)。

最佳答案

您可以使用以下事实


也可以通过名为@的映射访问assigns变量,
使用方括号语法访问映射中不存在的键将返回nil而不是引发异常,
如果左边的是||,则nil返回右边的值,


和写:

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


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

编辑:如果您始终设置@height,即使值是nil,也可以使用更少的代码来完成此操作:

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


即使未将@height设置为任何值,先前的代码也将起作用,但是如果未设置@height,这将引发异常。

关于elixir - 在模板中传递默认参数的最佳方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44116297/

10-15 23:20