2017-05-22 96 views
1

有时候在我的模板,我想对于一些CSS属性定义默认值时,这些值作为参数在渲染功能不通过,像这样:最佳方式

height: <%= if @height do %><%[email protected]%><% else %>"50px";<%end%> 

我我想知道是否有更好的(不太详细的)做这件事的方法。

回答

5

您可以使用一个事实,即

  1. @变量也可以通过一个名为assigns地图访问,
  2. 使用括号语法返回访问地图中的一个不存在的关键零,而不是抛出一个例外,
  3. ||返回右边值,如果左侧是nil

和写:

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

,以获得相同的行为,你的if/else

编辑:

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

上面的代码将工作,即使​​没有设置任何:如果你总是设置​​,即使值为nil,你可以用较小甚至代码做到这一点值,但如果未设置​​,则会引发异常。