【问题标题】:Haml ruby expression indentationHaml ruby​​ 表达式缩进
【发布时间】:2012-11-24 11:33:21
【问题描述】:

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

%ul
  %li foo
  - if true
    %li bar

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

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

【问题讨论】:

  • 您应该考虑在code review stackexchange上发布诸如此类的问题
  • 这也让我感到不安,但我认为下面的 erb 建议更糟。我发现当它们开始失控时,我会把相当小的东西放在局部。
  • @froderik 我同意你的观点,在我的建议和原始代码之间,我可能会选择原始代码,但我正在尽力回答手头的问题。在给定视图文件中格式化代码方面的可用选项中,有更好的选择吗?
  • 我当然想找一个!我想这些东西是为了获得紧凑性(我们非常喜欢!)的权衡。
  • 您好,答案中的任何一个都做了,好吧,回答您的问题。如果是这样,也许接受一个?

标签: haml


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    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
    

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

    【讨论】:

    • 漂亮!我比我更喜欢它。
    • thx - 我很分裂 - 我不喜欢将它分散到多个文件中,但我也不喜欢嵌入的 erb
    猜你喜欢
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    相关资源
    最近更新 更多