2012-11-23 51 views
2

更新: Haml確實已經自動完成了!不過,我在link_to助手中有一個哈希,而不是Haml標籤,甚至沒有注意到它。傻我!所以這個問題非常無效。如何使用Haml呈現布爾數據屬性?

Haml的是渲染布爾HTML屬性非常簡單:

%input{checked: @boolean} 

呈現一個簡單的<input>如果@boolean是falsy,或<input checked>否則。

Haml的也可以很容易地呈現數據屬性:

%a{data: { is_special: false } } 

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

有什麼辦法可以讓Haml將這個自定義data-is-special屬性解釋爲布爾值嗎?我想而不是如果分配了一個falsy值,它就會出現,並且如果有任何truthy被分配,它就會出現。

+0

%input {:checked => true}是合適的haml布爾屬性語法,正如更新中對任何感興趣的人所述 – Evan

回答

1

括號內的代碼是普通的ruby代碼,所以如果只有你可以在ruby中執行這個任務,你有自己的解決方案。我想出了這樣的事情:

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

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

這個解決方案沒有發揮好,如果你已經合併要在單一哈希特殊和一般治療密鑰。

+0

不錯!不過,我想知道,如果Haml能夠爲以'is-'開頭或以問號結尾的屬性做些聰明的事情。 –

+1

哦,Haml已經完全按照我提問的方式來完成了。這只是我在一個Rails幫手而不是Haml標籤中有一個散列。無論如何,這對助手仍然有用。 –

相關問題