【问题标题】:How do I DRY up repeated nested HAML?如何干燥重复的嵌套 HAML?
【发布时间】:2015-12-18 20:09:55
【问题描述】:

我正在编写电子邮件视图,它们在使用嵌套表时特别讨厌。我的电子邮件的许多部分中的每一个都希望围绕它进行同样令人讨厌的事情:

%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 不那么缩进和杂乱无章?

【问题讨论】:

  • 简短的回答是否定的,可能渲染其他文件是要走的路,你可以随时使用文件夹来组织它们,这样更容易理解。所以所有的电子邮件模板都在 email/ 内。

标签: ruby-on-rails haml dry


【解决方案1】:

这可以在不渲染部分的情况下完成。

您可以创建一个这样的辅助方法来隐藏您所说的所有“粗糙”。

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

【讨论】:

  • 太棒了。谢谢 - 这个建议很有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-15
  • 1970-01-01
  • 2017-01-28
  • 2014-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多