Haml中if / else语句的语法 - 其他意外关键字?

时间:2013-11-07 11:19:43

标签: ruby-on-rails ruby if-statement syntax-error haml

我刚刚切换到HAML并将我的erb转换为haml。我在设置代码时遇到错误(其他意外的关键字),我认为应该看起来:

= if signed_in?
  %li= link_to "Users", '#'
  %li#fat-menu.dropdown
    %a.dropdown-toggle{ href: '#', data: { toggle: "dropdown" } } 
      Account
      %b.caret
    %ul.dropdown-menu
      %li= link_to "Profile", current_user
      %li= link_to "Settings", '#'
      %li.divider
      %li= link_to "Log out", signout_path, method: "delete"
= else
  %li= link_to "Log in", signin_path

我尝试过很多东西,但我似乎无法解决语法错误。我相信对于知道HAML的人来说,这是一个非常基本的事情。非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

您应该在=-之前将if替换为else

答案 1 :(得分:2)

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

- if condition
  = something
- else
  = something_else