2

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

Haml 使渲染布尔 HTML 属性变得非常容易:

%input{checked: @boolean}

呈现一个简单的<input>if@boolean是假的,<input checked>否则。

Haml 还可以轻松呈现数据属性:

%a{data: { is_special: false } }

呈现:<a data-is-special="false">

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

4

1 回答 1

1

括号中的代码是普通的 ruby​​ 代码,所以只要你能在 ruby​​ 中执行这个任务,你就有自己的解决方案。我想出了类似的东西:

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

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

如果您在单个哈希中组合了要特别处理且通常处理的键,则此解决方案效果不佳。

于 2012-11-23T10:38:48.193 回答