84 votes

Comment écrire une condition if en Haml ?

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

132voto

bilash.saha Points 3614

HAML est basé sur l'indentation, et l'analyseur peut être délicat. Vous n'avez pas besoin d'utiliser "-end" dans Haml. Utilisez l'indentation à la place. 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 de bloc if 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

Éditer : Si vous voulez juste utiliser la condition if alors

  - if current_user
  = link_to 'Logout', logout_path

18voto

Pratik Ganvir Points 41

Dans haml, deux opérateurs sont utilisés pour le code ruby.

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

Exemple:

 = form_for @user  
  • - est utilisé pour le code ruby qui est évalué et n'est PAS inséré dans le document.

Exemple:

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

9voto

Brandon Tilley Points 49142

Dans haml, utilisez le - (tiret) pour indiquer qu'une ligne est du code Ruby. De plus, le niveau d'indentation indique le niveau de 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 %>

2voto

Anton Sergeyev Points 371

Si vous voulez mettre une condition dans votre tag

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

METTRE À JOUR

Voici une autre variante

 %nav(class="navbar"){class: content_for?(:navbar_class) ? yield(:navbar_class) : nil}

-2voto

gkstr1 Points 47

Voici deux liens :

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

Le premier est un convertisseur - vous pouvez entrer des extraits html ou erb et vous obtenez haml !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X