Usando Helpers do Haml
Você que trabalha com Haml já deve ter precisado retornar código HTML de algum helper, mas como já usa esse template engine não quer voltar atrás e usar a velha linguagem de marcação..
Suponha que em uma view index.haml
temos a chamada para o seguinte helper:
= verbose_order_state order.state
Esse método deve retornar um HTML com o estado do pedido com ícones e enfeites do tipo, mas lembre-se, desejamos escrever Haml.
Podemos escrever nosso método do helper utilizando os métodos haml_tag
e haml_concat
do Haml, veja:
def verbose_order_state(order_state)
case order_state
when 'waiting_approval'
haml_tag :div, style: 'text-align: center' do
haml_tag :i, class: 'icon-time icon-2x'
haml_tag :br
haml_tag :span, class: 'text-warning' do
haml_concat 'Aguardando Aprovação'
end
end
...
end
end
Desse jeito, teriamos que trocar o =
por -
na view index, porque segundo a documentação, o método haml_tag
tem a saída direta no buffer, não permitindo o retorno:
- verbose_order_state order.state
Agora, se você preferir retornar uma string invés de mandar direto pro buffer, pode encapsular as tags no método capture_haml
:
def verbose_order_state(order_state)
case order_state
when 'waiting_approval'
capture_haml do
haml_tag :div, style: 'text-align: center' do
haml_tag :i, class: 'icon-time icon-2x'
haml_tag :br
haml_tag :span, class: 'text-warning' do
haml_concat 'Aguardando Aprovação'
end
end
end
...
end
end
E então voltar a usar =
invés de -
na view:
= verbose_order_state order.state
Abraços.