如何干掉重复嵌套的HAML?

Jas*_*son 0 haml ruby-on-rails dry

我正在编写电子邮件视图,这在使用嵌套表时尤其令人讨厌.我的电子邮件的许多部分中的每一部分都需要围绕它的相同讨厌的东西:

%table.centered
  %tbody
    %tr
      %td
        %table.one-col{"emb-background-style" => ""}
          %tbody
            %tr
              %td.column
                %div
                  .column-top  
                %table.contents
                  %tbody
                    %tr
                      %td.padded
                        COPY COPY COPY ETC.
Run Code Online (Sandbox Code Playgroud)

每个部分的内容都是大量的副本和链接以及诸如此类的内容,并将其放入ruby字符串或从单独的文件中呈现它将很难遵循.这是我想要模糊的瑕疵,而不是部分内容.

那么,有没有办法以某种方式连接残骸,使HAML减少缩进和苛刻?

Mil*_*eld 5

这可能不会渲染部分.

你可以像这样制作一个帮助方法来隐藏你所说的所有"残酷".

# app/helpers/application_helper.rb
def nested_blk_call(&blk)
  content_tag :div, class: "nested-tag-level-1" do
    content_tag :div, class: "nested-tag-level-2" do
      content_tag :div, class: "nested-tag-level-3" do
        blk.call
        ""
      end
    end
  end
end

# some_view.html.haml
= nested_blk_call do
  .you-can-add-more-haml
    COPY COPY COPY ETC.
Run Code Online (Sandbox Code Playgroud)

这将在浏览器中输出

<div class="nested-tag-level-1">
  <div class="nested-tag-level-2">
    <div class="nested-tag-level-3">
      <div class="you-can-add-more-haml">
        COPY COPY COPY ETC.
      </div>
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)