Creo que la sugerencia de Odin de utilizar un parcial es probablemente la mejor en la mayoría de las situaciones.
Sin embargo, como una solución alternativa, encontré a thread donde Nathan Weizenbaum sugirió definir este método:
def haml_tag_if(condition, *args, &block)
if condition
haml_tag *args, &block
else
yield
end
end
lo que está en el bloque habría siempre ser prestados, pero la etiqueta de envoltura gustaría aparecer o no en base bajo la condición.
Se podría utilizar la siguiente manera:
- haml_tag_if(planning_to_mail?, :div, :id => 'envelope') do
%p I'm a letter
Si planning_to_mail?
evalúa true
, se obtendría:
<div id="envelope">
<p>I'm a letter</p>
</div>
Si se evalúa false
, se obtendría:
<p>I'm a letter</p>
Flotó la idea de agregar esto a Haml::Helpers
, pero eso doesn't appear to have happened yet.
No estoy muy seguro de cómo esto se relaciona a HTML si es HAML ... – element119
Este es un duplicado de: http://stackoverflow.com/questions/8636401/haml-create-container-element-only- if-condition-is-true –