如何使用Haml呈现布尔数据属性?

时间:2012-11-23 10:08:45

标签: ruby-on-rails html5 haml

更新:实际上,Haml已经自动执行此操作!但是,我在link_to帮助器中有一个哈希,而不是Haml标签,甚至没有注意到它。傻我!所以这个问题几乎无效。

Haml使渲染布尔HTML属性非常简单:

%input{checked: @boolean}
如果<input>是假的,则

呈现简单@boolean,否则呈现<input checked>

Haml还可以轻松渲染数据属性:

%a{data: { is_special: false } }

渲染:<a data-is-special="false">

有没有办法让Haml将这个自定义data-is-special属性解释为布尔值?如果分配了一个假值,我想让它存在,并且如果分配了任何真实的话,我希望它存在。

1 个答案:

答案 0 :(得分:1)

括号中的代码是正常的ruby代码,因此如果只能在ruby中执行此任务,那么您自己就有了解决方案。我想出了类似的东西:

def remove_false(hsh)
  Hash[hsh.each_pair.select {|key, value| value}]
end

{data: remove_false(is_special: false)} #=> {:data => {}}

如果您想要专门处理并且通常在单个哈希中使用的组合键,则此解决方案效果不佳。