Rails 邮件程序 append_view_path 不工作

Rails mailer append_view_path not working

我正在尝试使用 append_view_path 以便在发送的每封电子邮件末尾呈现包含我想要的一些额外信息的部分内容。

我的邮件 class 看起来像这样:

class PasswordMailer < ActionMailer::Base
  default :from => CaseCenter::Config::Reader.get('email_from')

  append_view_path Rails.root.join('app','views','password_mailer')

  def password_changed(user)
    @user = user
    mail(:to => user.email, :subject => t('mailer.email_topic_password_changed'))
  end
end

当这是 运行 时,它不会将我的部分内容添加到电子邮件的末尾。 (虽然发送了一封电子邮件)。 我的部分位于 app/views/password_mailer/password_changed_template.html.erb 中,只包含一个简单的 HTML 元素。

感谢您的帮助

如果我理解了您要正确执行的操作,您可以使用布局来完成此操作。这与使用 ActionController 执行 MVC 时使用的布局非常相似。

# app/mailers/application_mailer.rb
class ApplicationMailer < ActionMailer::Base
  layout 'mailer'
end
class PasswordMailer < ApplicationMailer
  default from: CaseCenter::Config::Reader.get('email_from')
  def password_changed(user)
    @user = user
    mail(to: user.email, subject: t('mailer.email_topic_password_changed'))
  end
end

app/views/layouts/mailer.html.erb:

<!DOCTYPE html>
<html lang="en">
<head>
  # ...
</head>
<body>
  <%= yield %>
  <hr>
  <footer>
    This spam was sent to you by EvilCorp. If you where looking to unsubscribe you are out of luck.
  </footer>
</body>
</html>

app/views/layouts/mailer.txt.erb:

<%= yield %>

-------------------------------------
This spam was sent to you by EvilCorp. 
If you where looking to unsubscribe you are out of luck.

当然,您也可以将页脚分成部分并像在普通视图中一样渲染它:

<!DOCTYPE html>
<html lang="en">
<head>
  # ...
</head>
<body>
  <%= yield %>
  <%= render 'shared/mailer_footer' %>
</body>
</html>