В веб-фреймворке Ruby on Rails есть отличная возможность подключить новый шаблонизатор haml вместо имеющегося стандартного erb-шаблонизатора. Для этого достаточно в Gemfile проекта добавить строчку:
gem "haml"
Так выглядит erb-шаблон для отображения товаров - index.html.erb:
А вот тот же шаблон с использованием haml - index.html.haml:
Если вы используете в работе Ruby on Rails, использование шаблонизатора haml позволит вам сократить количество кода в ваших шаблонах и сделает их более читаемыми. Поначалу может показаться, что нет смысл учить чью-то придумку, ведь есть старый добрый html. Однако в больших проектах кода много и его читаемость можно улучшить применив этот шаблонизатор. Кроме того, правила haml-шаблонизатора весьма просты, освоить их можно минут за 20, проделав самостоятельно примеры, приведенные на официальном сайте шаблонизатора haml.
Также есть аналогичный шаблонизатор - slim, синтаксис которого еще лучше. Однако, у нас в проекте используется haml, поскольку "так исторически сложилось".
gem "haml"
Так выглядит erb-шаблон для отображения товаров - index.html.erb:
<h1>Listing products</h1> <% if notice %> <p id="notice"><%= notice %></p> <% end %> <table class="products"> <% @products.each do |product| %> <tr class="<%= cycle('list_line_odd', 'list_line_even') %>"> <td> <%= image_tag(product.image_url, class: 'list_image') %> </td> <td class="list_description"> <dl> <dt><%= product.title %></dt> <dd><%= truncate(strip_tags(product.description), length: 80) %></dd> </dl> </td> <td class="list_actions"> <%= link_to 'Показать', product %><br/> <%= link_to 'Ред.', edit_product_path(product) %><br/> <%= link_to 'Удалить', product, method: :delete, data: { confirm: I18n.t('app.delete_confirm') } %> </td> </tr> <% end %> </table> <br /> <%= link_to 'New product', new_product_path %>
А вот тот же шаблон с использованием haml - index.html.haml:
%h1 Listing products - if notice %p#notice= notice %table.products - @products.each do |product| %tr{class: "#{cycle('list_line_odd', 'list_line_even')}"} %td %p= image_tag(product.image_url, class: 'list_image') %td.list_description %dl> %dt= product.title %dd= truncate(strip_tags(product.description), length: 80) %td.list_actions = link_to 'Показать', product %br/ = link_to 'Ред.', edit_product_path(product) %br/ = link_to 'Удалить', product, method: :delete, data: { confirm: I18n.t('app.delete_confirm') } %p= link_to 'New product', new_product_path
Если вы используете в работе Ruby on Rails, использование шаблонизатора haml позволит вам сократить количество кода в ваших шаблонах и сделает их более читаемыми. Поначалу может показаться, что нет смысл учить чью-то придумку, ведь есть старый добрый html. Однако в больших проектах кода много и его читаемость можно улучшить применив этот шаблонизатор. Кроме того, правила haml-шаблонизатора весьма просты, освоить их можно минут за 20, проделав самостоятельно примеры, приведенные на официальном сайте шаблонизатора haml.
Также есть аналогичный шаблонизатор - slim, синтаксис которого еще лучше. Однако, у нас в проекте используется haml, поскольку "так исторически сложилось".