Comment écrire des instructions if
et if
-else
dans Haml pour une Ruby on Rails ?
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
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!"
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 %>
Si vous voulez mettre la condition à l'intérieur de votre tag
%section{:class => "#{'new-class' if controller.action_name == 'index'}"}