更新:事实上,Haml已经自动完成了!然而,我在link_to
helper中有一个hash,而不是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
属性解释为布尔属性吗?如果分配了一个错误的值,我希望它不存在;如果分配了任何真理,我希望它存在。 最佳答案
括号中的代码是普通的ruby代码,所以如果你能用ruby执行这个任务,你就有了一个解决方案。我想出了这样的办法:
def remove_false(hsh)
Hash[hsh.each_pair.select {|key, value| value}]
end
{data: remove_false(is_special: false)} #=> {:data => {}}
如果您有要在单个散列中进行特殊处理的组合键,则此解决方案不会很好地发挥作用。