Как написать if-условие в Haml?
как писать if
и if
-else
заявления в Haml для приложения Ruby on Rails?
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'}"}