0

当它赋予 ruby​​ 表达式时,比如 if 语句,我不知道如何正确缩进。

%ul
  %li foo
  - if true
    %li bar

上面的代码工作,但两者%li没有对齐,这对我来说并不优雅,因为它们处于同一级别(我的意思是两者都是 %ul 的孩子)

有没有更优雅的方法来做到这一点?

4

2 回答 2

1

如果您关心格式以提高可读性,最好的选择是使用erb:过滤器转义 haml。

%ul
  erb:
    <li>foo</li>
    <% if true %><li>bar</li><% end %>

不幸的是,在这种情况下,缩进会降低代码的可读性,但请记住,这种视图对于大量逻辑来说并不意味着什么。您应该尽可能地使用控制器和助手从视图中提取逻辑。

于 2012-11-24T11:40:12.877 回答
1

好的 - 当案例比这个“有点”复杂时,这就是我的代码中发生的情况:

list.haml

%ul
  = render :partial => 'list_item', :locals => { value => 'foo', cond => true }
  = render :partial => 'list_item', :locals => { value => 'bar', cond => false }

_list_item.haml

- if cond
  %li= value

但在这种微不足道的情况下,我可能不会这样做。大多数情况最终会变得不那么琐碎......这种方法的缺点是您需要访问另一个文件以查看实际发生的情况。专业人士是干燥的。

于 2012-11-27T08:57:18.483 回答