gpt4 book ai didi

ruby-on-rails-3 - 如何防止 Rails HTML 电子邮件中的样式重复?

转载 作者:行者123 更新时间:2023-12-04 07:06:40 24 4
gpt4 key购买 nike

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

还有,有没有办法消除 html.erb 和 text.erb 文件之间的文本重复。

最佳答案

一个简单的方法是引用几个部分。假设他们的名字是这样的:

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

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

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

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

"Layout and Rendering" Rails Guide "Action Mailer" Rails Guide 的布局部分如果您以前没有这样做过,那么这些都是有用的背景资料。

您将从这些引用资料中看到,有多种方法可以在 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 调用,这是您的特定电子邮件内容将呈现的地方。

这种方法会保留您的内容“DRY”。

关于ruby-on-rails-3 - 如何防止 Rails HTML 电子邮件中的样式重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12700699/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com