Подтвердить что ты не робот

Как написать if-condition в Haml?

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

4b9b3361

Ответ 1

HAML основан на отступе, и синтаксический анализатор может быть сложным. Вам не нужно использовать "конец" в Haml. Вместо этого используйте отступ. В Haml блок начинается всякий раз, когда отступ увеличивается после команды вычисления Ruby. Он заканчивается при уменьшении отступов. Выберите, если else заблокирован следующим образом.

- if condition
  = something
- else
  = something_else

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

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

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

 - if current_user
  = link_to 'Logout', logout_path

Ответ 2

В haml для рубинового кода используются два оператора.

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

Пример:

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

Пример:

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

Ответ 3

В 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 %>

Ответ 4

Если вы хотите поместить условие в свой тег

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