Style warunkowe w hamlu

Jak ładnie i szybko radzić sobie z takimi potworkami w hamlu?

#some_div{ :style => "#{'display:none;' if @some_collection.blank?}" } #some_div{ :class => "#{'some_class' if @some_collection.blank?}" }
Czy może zostawiać to jak jest i nie pisać za dużo helperów?

Tak na szybko przychodzi mi do głowy:

[code=Ruby]def hide_if(condition)
‘display:none;’ if condition
end

#some_div{ :style => hide_if(@some_collection.blank?)}[/code]
i analogicznie

[code=Ruby]def set_class_if(class_name, condition)
class_name if condition
end

#some_div{ :class => set_class_if(‘some_class’, @some_collection.blank?) }[/code]

A może coś takiego?

[code=ruby]# helper
module ApplicationHelper
def hidden_div_if(condition, &block)
if condition
concat("

", block.binding)
end
yield
if condition
concat("
")
end
end
end

widok

<% hidden_div_if(true) do %>

Test

<% end %>[/code] W hamlu także powinno to działać.

Haml w wersji 3 akceptuje tablice dla id i class, więc można coś pokombinować

http://beta.haml-lang.com/docs/yardoc/file.HAML_CHANGELOG.html

Helpery są bardzo przydatne przy większej plątaninie.

Myślę, że tematyczne i poniższe wystarczy w tak prostych przypadkach. :wink:

#some_div{ :style => @some_collection.blank? && 'display:none;' }