当它赋予 ruby 表达式时,比如 if 语句,我不知道如何正确缩进。
%ul
%li foo
- if true
%li bar
上面的代码工作,但两者%li
没有对齐,这对我来说并不优雅,因为它们处于同一级别(我的意思是两者都是 %ul 的孩子)
有没有更优雅的方法来做到这一点?
当它赋予 ruby 表达式时,比如 if 语句,我不知道如何正确缩进。
%ul
%li foo
- if true
%li bar
上面的代码工作,但两者%li
没有对齐,这对我来说并不优雅,因为它们处于同一级别(我的意思是两者都是 %ul 的孩子)
有没有更优雅的方法来做到这一点?
如果您关心格式以提高可读性,最好的选择是使用erb:
过滤器转义 haml。
%ul
erb:
<li>foo</li>
<% if true %><li>bar</li><% end %>
不幸的是,在这种情况下,缩进会降低代码的可读性,但请记住,这种视图对于大量逻辑来说并不意味着什么。您应该尽可能地使用控制器和助手从视图中提取逻辑。
好的 - 当案例比这个“有点”复杂时,这就是我的代码中发生的情况:
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
但在这种微不足道的情况下,我可能不会这样做。大多数情况最终会变得不那么琐碎......这种方法的缺点是您需要访问另一个文件以查看实际发生的情况。专业人士是干燥的。