2015-12-18 83 views
0

我正在撰寫電子郵件視圖,這在使用嵌套表格時特別討厭。我的每一個電子郵件的許多部分的希望圍繞它同樣討厭的克魯夫特:如何烘乾重複嵌套的HAML?

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

每個部分的內容是很多的副本和鏈接和諸如此類的東西,並把該進紅寶石字符串或從單獨的文件中渲染它會難以遵循。這是我想隱瞞的東西,而不是節的內容。

那麼,有沒有辦法以某種方式連接cruft使HAML更少縮進和crufty?

+0

簡短的回答是否定的,可能使其他文件是要走的路,你總是可以使用文件夾來整理它們,使其更容易跟隨。所以所有的電子郵件模板都在'email /'裏面。 – Leito

回答

5

這是可能的,無需呈現部分。

你可以像這樣做一個輔助方法來隱藏所有'cruft',就像你放置它一樣。

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

太棒了。謝謝 - 這個建議非常有幫助。 – Jason