如何在Haml中为Ruby on Rails应用程序编写if
和if
- else
语句?
答案 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)
以下是两个链接:
第一个是转换器 - 您可以输入html或erb片段,然后就可以获得haml!