2

我正在尝试构建 Rails HTML 电子邮件,但电子邮件的结构(页眉和页脚)在每封邮件中都是重复的。通常这不是问题,但是对于内联样式,如果我想更改颜色,这似乎是一个问题。我怎样才能将这些元素从每个文件中提取出来并合并到一个文件中?

此外,是否有消除 html.erb 和 text.erb 文件之间的重复文本。

4

1 回答 1

8

一个简单的方法是引用几个部分。假设它们的名称如下:

  • _email_header.html.erb
  • _email_footer.html.erb

然后,您可以在每封电子邮件中引用它们:

<%= render :partial => 'email_header' %>
Blah, email-specific content here...
<%= render :partial => 'email_footer' %>

这会起作用,但仍会导致一堆复制粘贴,尽管比内联完整结构的原始版本少。一种更简洁的管理方法是为这些电子邮件设置自定义布局。

布局和渲染”Rails 指南和“Action Mailer”Rails 指南的布局部分对此很有帮助,如果您以前没有这样做过的话。

您将从这些参考资料中看到,有多种方法可以在 Action Mailer 中调用布局(还有更多方法,在邮件上下文之外),但举个例子,您可以在此处创建布局模板文件:app/views/layouts/{your_mailer_name}.html.erb. 例如,“user_mailer.html.erb”

它的内容可能看起来像这样:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>My Fancy Email</title>
  </head>
  <body>
    <%= render :partial => 'email_header' %>
    <%= yield %>
    <%= render :partial => 'email_footer' %>
  </body>
</html>

请注意yield通话,这是您的特定电子邮件内容将呈现的地方。

这种方法使您的内容保持“干燥”。

于 2012-10-03T02:03:41.623 回答