我可能遗漏了一些明显的东西,但我有一个徽标,我想将其包含在从我的应用程序发送的所有电子邮件中。我有一个用于所有这些邮件的主布局。我认为有一种方法可以使其保持干燥,而不必在每个邮件程序方法中添加代码行来附加文件。有人可以指出我正确的方向或纠正我的思路吗?
Thanks!
未来的 Rails 版本将支持使用 before_filter 和 after_filter 的回调:
http://github.com/rails/rails/commit/4f28c4fc9a51bbab76d5dcde033c47aa6711339b http://github.com/rails/rails/commit/4f28c4fc9a51bbab76d5dcde033c47aa6711339b
由于它们将使用 AbstractController::Callbacks 实现,因此您可以执行以下操作来模仿 Rails 4 发布后 ActionMailer::Base 中将出现的功能:
class YourMailer < ActionMailer::Base
if self.included_modules.include?(AbstractController::Callbacks)
raise "You've already included AbstractController::Callbacks, remove this line."
else
include AbstractController::Callbacks
end
before_filter :add_inline_attachments!
private
def add_inline_attachments!
attachments.inline["footer.jpg"] = File.read('/path/to/filename.jpg')
end
end
这包括将在未来 Rails 版本中使用的模块,因此您可用的回调挂钩将是相同的,以确保未来的兼容性。当您尝试升级到已包含 AbstractController::Callbacks 的 Rails 版本时,该代码将会引发,因此系统会提醒您删除条件逻辑。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)