更新:事实上,Haml已经自动完成了!然而,我在link_tohelper中有一个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 => {}}

如果您有要在单个散列中进行特殊处理的组合键,则此解决方案不会很好地发挥作用。

10-04 22:30
查看更多