How to write if-condition in Haml?

醉酒当歌 提交于 2019-12-04 07:50:38

问题


How to write if and if-else statements in Haml for a Ruby on Rails application?


回答1:


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



回答2:


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!"



回答3:


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 %>



回答4:


If you want to put condition inside your tag

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



回答5:


Here are two links:

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

The first one is a converter- you can enter html or erb snippets and you get haml!



来源:https://stackoverflow.com/questions/8026619/how-to-write-if-condition-in-haml

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!