Comment écrire des if
et if
- else
dans Haml pour une application Ruby on Rails ?
Réponses
Trop de publicités?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
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!"
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 %>