web-dev-qa-db-fra.com

Comment écrire if-condition en Haml?

Comment écrire des instructions if et if-else dans Haml pour une Ruby on Rails ?

69

HAML est basé sur l'indentation et l'analyseur peut être délicat. Vous n'avez pas besoin d'utiliser "- end" dans Haml. Utilisez plutôt l'indentation. Dans Haml, un bloc commence chaque fois que l'indentation est augmentée après une commande d'évaluation Ruby. Il se termine lorsque l'indentation diminue. Exemple si le bloc else comme suit.

- if condition
  = something
- else
  = something_else

Un exemple pratique

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

Edit: Si vous voulez juste utiliser if condition alors

 - if current_user
  = link_to 'Logout', logout_path
114
bilash.saha

En haml, deux opérateurs sont utilisés pour Ruby code.

  • = est utilisé pour Ruby code qui est évalué et inséré dans le document.

Exemple:

= form_for @user  
  • - est utilisé pour Ruby code qui est évalué et NON inséré dans le document.

Exemple:

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

En haml, utilisez le - (tiret) pour indiquer qu'une ligne est Ruby code. De plus, le niveau d'indentation indique le niveau du bloc. Combinez les deux pour les instructions if/else.

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

est le même que le code suivant dans ERB:

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

Si vous voulez mettre la condition à l'intérieur de votre tag

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