Haml:如果语句在属性声明中

时间:2015-12-24 02:35:44

标签: ruby-on-rails ruby haml

我试图为style属性设置条件。根据{{​​3}},这样的事情应该是可能的:

.hello{:style => (true ? 'color: green' : 'color: red;')}

但对我来说,style属性根本没有输出。哈姆的事情发生了变化吗?我宁愿不为这种简单的逻辑创建一个帮手。

1 个答案:

答案 0 :(得分:0)

我会选择简单的路线并添加一行:

- color = true ? 'color: green' : 'color: red;'
.hello{:style => color}

更简单的方法是添加另一个类并根据需要从css / javascript控制它:

- success_class = true ? 'success' : 'failed'
.hello{:class => success_class}

这会给你<div class='hello success'></div>

编辑:三元似乎也有效,但

require 'haml'
# => true
str = ".hello{:class => true ? 'green' : 'red' }"
# => ".hello{:class => true ? 'green' : 'red' }"
Haml::Engine.new(str).render

# => "<div class='green hello'></div>\n"
str = ".hello{:style => true ? 'color:green' : 'color:red' }"
# => ".hello{:style => true ? 'color:green' : 'color:red' }"
Haml::Engine.new(str).render
# => "<div class='hello' style='color:green'></div>\n"