如何在Haml中编写if-condition?

时间:2011-11-06 11:11:34

标签: ruby-on-rails haml

如何在Haml中为Ruby on Rails应用程序编写ifif - else语句?

5 个答案:

答案 0 :(得分:113)

HAML是基于缩进的,解析器可能很棘手。你不需要在Haml中使用“ - end”。改为使用缩进。在Haml中,只要在Ruby评估命令之后增加缩进,就会开始一个块。它在缩进减少时结束。如果否则阻塞如下。

- if condition
  = something
- else
  = something_else

一个实际的例子

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

修改: 如果您只想使用if条件

 - if current_user
  = link_to 'Logout', logout_path

答案 1 :(得分:16)

在haml中,两个运算符用于ruby代码。

  • =用于评估并插入到文档中的ruby代码。

示例:

= form_for @user  
  • -用于评估的ruby代码,不会插入到文档中。

示例:

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

答案 2 :(得分:8)

在haml中,使用-(破折号)表示一行是Ruby代码。此外,缩进级别表示块级别。将这两个结合起来用于if / else语句。

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

与ERB中的以下代码相同:

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

答案 3 :(得分:2)

如果您想在条件中添加条件

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

答案 4 :(得分:-2)

以下是两个链接:

  1. https://html2haml.herokuapp.com/
  2. http://haml.info/tutorial.html
  3. 第一个是转换器 - 您可以输入html或erb片段,然后就可以获得haml!