A maneira mais popular de embutir código Ruby dentro de views em aplicações Ruby on Rails é utilizando arquivos do tipo ERB (Embedded Ruby). O Rails oferece suporte ao ERB por padrão, mas existem outros processadores como o HAML e o Slim, que também podem ser utilizados com facilidade. Vamos comparar os três formatos.
ERB
O formato ERB permite implementar código Ruby em diferentes tipos de documento, como HTML e XML. A sintaxe básica fica mais ou menos assim:
<h1>Catálogo de Livros</h1>
<p>Boas vindas!</p>
<% if @books.any? %>
<% @books.each do |book| %>
<h3><%= book.title %> </h3>
<p><%= book.author %> </p>
<p><%= book.publication_year %> </p>
<% end %>
<% else %>
<h3> Não há livros cadastrados </h2>
<% end %>
No ERB a estrutura e sintaxe do HTML permanecem e podemos utilizar <% %>
para embutir código Ruby nele. Caso o retorno desse código deva ser inserido no documento, usamos <%= %>
, da mesma maneira como uma interpolação. Elementos HTML podem ser adicionados como um documento HTML normal.
HAML
HAML (HTML abstraction markup language) tem sintaxe super limpa e concisa:
%h1 Catálogo de Livros
%p Boas vindas!
- if @books.any?
- @books.each do |book|
%h3= book.title
%p= book.author
%p= book.publication_year
- else
%h3 Não há livros cadastrados
Para indicar que o retorno do código Ruby deve ser inserido no documento, deve ser usado o =
. Quando o código será apenas executado (sem inserir no documento), usamos o -
(hífen). Elementos HTML são implementados com %
seguido pelo nome do elemento e o aninhamento de elementos é indicado pela indentação, por exemplo:
%primeiro
%segundo
%terceiro Texto do elemento
Esse HAML vai compilar um HTML assim:
<primeiro>
<segundo>
<terceiro>Texto do elemento</terceiro>
</segundo>
</primeiro
Slim
Derivado do HAML, o Slim é outra forma de embutir Ruby em documentos. É uma alternativa ágil e leve que promete maior velocidade de compilação.
h1 Catálogo de Livros
p Boas vindas!
- if @books.any?
- @books.each do |book|
h3 = book.title
p = book.author
p = book.publication_year
- else
h3 Não há livros cadastrados
Com Slim a indicação de elementos HTML é feita diretamente, sem necessidade de marcadores. Da mesma forma que no HAML, código Ruby pode ser executado com o -
. Para que o código Ruby seja inserido no documento usamos o =
.
Convertendo views
Se você já possui um projeto construído com ERB e gostou de outro formato, existem ferramentas para converter seu código como o ERB 2 SLIM e o HTML to HAML. Também existem ferramentas para fazer o caminho reverso: [HAML to ERB}(https://haml2erb.org).
Considerações finais
Minha preferência ainda é pelo ERB, mas é sempre interessante conhecer as alternativas. Principalmente se for do seu interesse que o código das views seja mais enxuto. Se você ainda não conhecia as opções, vale a pena fazer alguns testes antes de tomar a decisão. Uma boa prática é manter sempre um único formato em todo projeto, garantindo que a leitura e manutenção seja mais simples no futuro.
Um ponto positivo é que no Rails é muito simples adicionar um novo processador, basta adicionar sua respectiva gem ao Gemfile da aplicação e criar (ou renomear) suas views com as extensões .haml
ou .slim
. Você pode ver mais detalhes sobre instalação e uso dos frameworks nos links abaixo.