【问题标题】:HAML nesting tagsHAML 嵌套标签
【发布时间】:2011-11-17 06:13:58
【问题描述】:

我正在尝试嵌套这个

  %h1 Admin Menu
    %small logged in as: #{session[:username]}

为了得到这样的东西

<h1>Admin Menu <small>logged in as: something</small></h1>

但我可以让它在不触发错误的情况下显示的唯一方法是将它们放在同一级别,比如说

  %h1 Admin Menu
  %small logged in as: #{session[:username]}

哪些输出:

<h1>Admin Menu</h1>
<small>logged in as: something</small>

这可能很愚蠢,但我不知道为什么这不起作用?

【问题讨论】:

    标签: haml


    【解决方案1】:

    Haml 仅在将嵌套的所有内容都是内联时才允许内联嵌套。所以你可以这样做:

    %h1 Admin Menu
    

    或者这个:

    %h1
      Admin Menu
      %small logged in as: #{session[:username]}
    

    但不是这个:

     %h1 Admin Menu
       %small logged in as: #{session[:username]}
    

    第一种形式确实应该被认为是一个方便的缩写。它存在,所以你可以采取这样的方式:

    %li
      One
    %li
      Two
    %li
      Three
    

    然后说:

    %li One
    %li Two
    %li Three
    

    【讨论】:

      【解决方案2】:

      我还没有尝试过,但是以下方法对您不起作用吗?

      %h1 
        Admin Menu
        %small logged in as: #{session[:username]}
      

      【讨论】:

        【解决方案3】:

        另一个技巧是这个。

        %h1 
          Admin Menu
          %small
            logged in as: 
            =session[:username]
        

        因为最后两行将在“小”标签内呈现

        【讨论】:

          【解决方案4】:

          或者你可以只使用简单的 css 来完成这个技巧,例如:

          %h1
            Admin Menu
              .small{ style: 'font-size: smaller;' }
                logged in as:
                = session[:username]
          

          这样你可以指定其他属性或字体的具体大小。

          【讨论】:

          • 在这种情况下, 标签只是一个例子,但我也想做其他标签的嵌套,谢谢你的提示。