更新:实际上,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
属性解释为布尔值?如果分配了一个假值,我想不让它存在,并且如果分配了任何真实的话,我希望它存在。
答案 0 :(得分:1)
括号中的代码是正常的ruby代码,因此如果只能在ruby中执行此任务,那么您自己就有了解决方案。我想出了类似的东西:
def remove_false(hsh)
Hash[hsh.each_pair.select {|key, value| value}]
end
{data: remove_false(is_special: false)} #=> {:data => {}}
如果您想要专门处理并且通常在单个哈希中使用的组合键,则此解决方案效果不佳。