有时,在我的模板内部,当某些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/