ruby on rails Comment écrire si-condition en Haml?




haml rails (4)

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


Answer #1

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

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

est identique au 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 %>

Answer #2

Si vous voulez mettre la condition dans votre tag

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


Answer #4

HAML est basé sur l'indentation, et l'analyseur peut être délicat. Vous n'avez pas besoin d'utiliser "- end" dans Haml. Utilisez 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. Échantillon si l’autre bloque 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 si condition alors

 - if current_user
  = link_to 'Logout', logout_path




haml