Как отобразить логические атрибуты данных с помощью Haml?
UPDATE: 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 ответ:
Код в скобках-это обычный код ruby, поэтому если бы вы могли выполнить эту задачу в ruby, у вас было бы решение. Я придумал что-то вроде этого:
def remove_false(hsh) Hash[hsh.each_pair.select {|key, value| value}] end {data: remove_false(is_special: false)} #=> {:data => {}}
Это решение плохо работает, если у вас есть комбинированные ключи, которые вы хотите обработать специально и нормально в одном хэше.