如何干掉重复嵌套的HAML?

时间:2015-12-18 20:09:55

标签: ruby-on-rails haml 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.

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

那么,有没有办法以某种方式连接起来使HAML缩进和缩小?

1 个答案:

答案 0 :(得分: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.

这会在浏览器中输出

<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>