【发布时间】:2015-12-11 22:05:34
【问题描述】:
我最近发现了 ActionMailer 的 after_action 回调,它有助于清理大量代码!我遇到的问题是在呈现电子邮件之后才会执行回调。这使得您无法实例化任何变量以在视图中使用。
例如,假设我的邮件中的所有电子邮件都需要包含用户的退订链接:
class BaseMailer < ActionMailer::Base
def email1(user)
@user = user
include_unsubscribe_link
...
end
def email2(user)
@user = user
include_unsubscribe_link
...
end
#...more actions
private
def include_unsubscribe_link
headers['List-Unsubscribe'] = @unsubscribe_link = @user.unsubscribe_link
end
end
使用 after_action 清理它会很好,但是回调是在视图渲染后运行的,因此视图无法访问实例变量。我不能使用 before_action,因为实例变量尚未实例化并且取决于操作的参数。
有什么办法可以把它弄干?
【问题讨论】:
标签: ruby-on-rails actionmailer