How to write if-condition in Haml? How to write if-condition in Haml? ruby-on-rails ruby-on-rails

How to write if-condition in Haml?


HAML is indentation based , and the parser can be tricky.You don't need to use "- end" in Haml. Use indentation instead.In Haml,a block begins whenever the indentation is increased after a Ruby evaluation command. It ends when the indentation decreases.Sample if else block as follows.

- if condition  = something- else  = something_else

A practical example

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

Edit : If you just want to use if condition then

 - if current_user  = link_to 'Logout', logout_path


In haml two operators are used for ruby code.

  • = is used for ruby code which is evaluated and gets inserted into document.

Example:

= form_for @user  
  • - is used for ruby code which is evaluated and NOT get inserted into document.

Example:

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


In haml, use the - (dash) to indicate a line is Ruby code. Furthermore, indention level indicates block level. Combine the two for if/else statements.

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

is the same as the following code in ERB:

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