这个haml文档是不正确的?

时间:2011-04-05 03:01:36

标签: ruby-on-rails ruby haml

来自haml doc

  

如果指定了单个值并且它   评估为false,忽略它;   否则它会被转换为   串。例如:

.item{:class => @item.is_empty? && "empty"}
  

可以渲染为:

class="item"
class="item empty"

但这对我没有意义。由于item.is_empty?被评估为真或假,因此正确的输出应该是......

class="empty"
class="item empty"

1 个答案:

答案 0 :(得分:4)

@item.is_empty? && "empty"

此处,如果@item为空,.is_empty?会返回true,因此会评估&&表达式的右侧操作数。这个表达式的结果是"empty" 如果@item 为空,.is_empty?返回false,则&&表达式的右侧操作数已评估,表达式的结果为false

所以,你最终将得到以下任何一个:

.item{ :class => "empty" }
.item{ :class => false }

HAML文档所说的是第二种情况(“单个值评估为false”)被忽略,因此可归结为以下任何一种情况:

.item{ :class => "empty" }
.item{ }

这导致以下任何一种:

class="item empty"
class="item"