Как правильно задать отступы haml-rails?

Только что подключил гем haml-rails.
Перегенерил все вьюхи. Часть из них он не перегенерил из-за ошибок (какие-то неподдерживаемые символы). Бог с ним. Думаю, что он не сделал - сделаю сам.
И т.к. я не силен в haml почти сразу образовался вопрос. Имеется следующий erb:
<% if condition1?%>
<div class="c1">
<% elsif condition2?%>
<div class="c2">
<% else %>
<div class="c3">
<% end %>
<div>Этот див вставлен в другой</div>
</div>


Не исправляя логики я сделал так:
- if condition1?
  .c1
- elsif condition2?
  .c2
- else
  .c3
  %div
    Этот див вставлен в другой


В зависимости от отступов я получаю ошибку отступов либо внутренний див находится снаружи, либо он появляется в разметке внутри только если не выполнились condition1 и condition2. Как обычно практикуют в таких случаях?
  • Вопрос задан
  • 294 просмотра
Решения вопроса 1
@fuCtor
Ruby разработчик
У Haml строгая иерархия, поэтому последний div либо должен быть вложен во все случаи, либо class должен быть рассчитан отдельно, например вот так:

- klass = 'c3'
- if condition1?
  - klass = 'c1'
- elsif condition2?
  - klass = 'c2'
 

%div{class: klass}
  %div
    Этот див вставлен в другой


А вообще эту логику нужно вынести в идеале в helper.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы