Я думаю, что предложение Одина использовать частичное, вероятно, является лучшим в большинстве ситуаций.
Однако в качестве альтернативного решения я нашел нить , где Натан Вайзенбаум предложил определить этот метод:
def haml_tag_if(condition, *args, &block)
if condition
haml_tag *args, &block
else
yield
end
end
Все, что находится в блоке, будет всегда отображаться , но тег переноса будет отображаться или не основываться на условии.
Вы бы использовали его следующим образом:
- haml_tag_if(planning_to_mail?, :div, :id => 'envelope') do
%p I'm a letter
Если planning_to_mail?
оценивает true
, вы получите:
<div id="envelope">
<p>I'm a letter</p>
</div>
Если оно оценивает false
, вы получите:
<p>I'm a letter</p>
Он высказал идею добавить это к Haml::Helpers
, но этого , похоже, еще не произошло .