【发布时间】:2015-04-18 17:05:22
【问题描述】:
我刚刚在我的 rails 应用程序上设置了邮件和操作/视图以及 HAML gem。我也在使用 mailgun 提供的transactional email templates。 HAML 中的典型邮件模板如下所示:
!!!
%html{xmlns: "http://www.w3.org/1999/xhtml"}
%head
%meta{content: "width=device-width", name: "viewport"}/
%meta{content: "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}/
%title Alerts e.g. approaching your limit
%link{href: "styles.css", media: "all", rel: "stylesheet", type: "text/css"}/
%body
%table.body-wrap
%tr
%td
%td.container{width: "600"}
.content
%table.main{cellpadding: "0", cellspacing: "0", width: "100%"}
%tr
%td.alert.alert-warning
Warning: You're approaching your limit. Please upgrade.
%tr
%td.content-wrap
%table{cellpadding: "0", cellspacing: "0", width: "100%"}
%tr
%td.content-block
You have
%strong 1 free report
remaining.
%tr
%td.content-block
Add your credit card now to upgrade your account to a premium plan to ensure you don't miss out on any reports.
%tr
%td.content-block
%a.btn-primary{href: "http://www.mailgun.com"} Upgrade my account
%tr
%td.content-block
Thanks for choosing Acme Inc.
.footer
%table{width: "100%"}
%tr
%td.aligncenter.content-block
%a{href: "http://www.mailgun.com"} Unsubscribe
from these alerts.
%td
如您所见,这将是相当多的代码行,其中包含 %html、%head、%tables、%tr、%td 等。在我将在我的应用程序中使用的每个邮件模板上重复(电子邮件确认、password_reset、other_notifications、weekly_digests 等)。
我的问题:有没有一种不错的 RAILS 方法可以将所有模板代码干枯成这样:
!!!
= render :partial => 'widgets/mail/head'
%body
= render :partial => "widgets/mail/header" # <Mail header>
= yield_mail_content # <Main tag for content>
= render :partial => "widgets/mail/footer" # <Mail footer>
或者更好,写registration_confirmation.html.haml如下:
= render :partial => 'widgets/mail/html_above'
= render <!-- registration_mail_specific_content_here -->
= render :partial => 'widgets/mail/html_below'
编辑:使用部分它可以工作,但仍然必须维护 %tables、%tr、%td 等的 HAML 嵌套。像这样:
.content
%table.main{cellpadding: "0", cellspacing: "0", width: "100%"}
= render :partial => 'widgets/mail/header'
%tr
%td.content-wrap
%table{cellpadding: "0", cellspacing: "0", width: "100%"}
%tr
%td.content-block
Hi
= succeed ',' do
= @user.first_name.capitalize
这主要意味着 %table、%tr、%td 将继续像往常一样保留在每个邮件模板上。
【问题讨论】:
-
我相信你可以对重复的部分使用部分?
-
部分不工作了吗?
-
我讨厌查看电子邮件。桌子让我的眼球爆炸。 :P
-
当我在电子邮件客户端上看到完全不同的、出乎意料的和损坏的(有时是奇怪的)输出时,我的眼睛会爆炸。 :-/
-
请参阅stackoverflow.com/questions/12700699/…,这是问题的答案
标签: ruby-on-rails email ruby-on-rails-4 actionmailer