Как написать if-условие в Haml?


как писать if и if -else заявления в Haml для приложения Ruby on Rails?

5 64

5 ответов:

HAML основан на отступе, и парсер может быть сложным.Вам не нужно использовать "- end" в Haml. Использование отступов instead.In Haml, блок начинается всякий раз, когда отступ увеличивается после команды Ruby evaluation. Он заканчивается, когда отступ уменьшается.Пример, если еще блок следующим образом.

- if condition
  = something
- else
  = something_else

практический пример

- if current_user
  = link_to 'Logout', logout_path
- else
  = link_to 'Login', login_path

Edit: Если вы просто хотите использовать условие if, то

 - if current_user
  = link_to 'Logout', logout_path

в haml для кода ruby используются два оператора.

  • = используется для кода ruby, который вычисляется и вставляется в документ.

пример:

= form_for @user  
  • - используется для кода ruby, который оценивается и не вставляется в документ.

пример:

- if @user.signed_in?  
  = "Hi"  
- else  
  = "Please sign in!"

В haml, используйте - (тире) для обозначения строки-это код Ruby. Кроме того, уровень отступа указывает на уровень блока. Объедините эти два оператора для if/else.

- if signed_in?
  %li= link_to "Sign out", sign_out_path
- else
  %li= link_to "Sign in", sign_in_path

это то же самое, что и следующий код в ERB:

<% if signed_in? %>
  <li><%= link_to "Sign out", sign_out_path %></li>
<% else %>
  <li><%= link_to "Sign in", sign_in_path %></li>
<% end %>

Если вы хотите поставить условие внутри тега

%section{:class => "#{'new-class' if controller.action_name == 'index'}"}

вот две ссылки:

  1. https://html2haml.herokuapp.com/
  2. http://haml.info/tutorial.html

первый-это конвертер-вы можете ввести фрагменты html или erb, и вы получите haml!