ruby-on-rails 如何从ActionMailer视图中获取“收件人”字段中的电子邮件地址?

s4n0splo  于 2023-04-22  发布在  Ruby
关注(0)|答案(2)|浏览(132)

我想让一个方法可以从mailer视图中访问,该方法根据电子邮件发送到的用户返回一个布尔值。
例如,假设用户有一个属性is_subscriber,它可以是true或false。该方法将包含如下内容:

def show_banner?
  FeatureManager.is_feature_available?(:subscription_banners) && !user.is_subscriber
end

我想从mailer视图中访问此方法。
问题是,我的应用程序中有很多邮件程序(UserMailer,SubscriptionMailer,FollowUpMailer),依赖于每个邮件程序的示例变量@user似乎有点危险。

是否有任何方法可以从“to”字段访问电子邮件地址,如本示例中,以便我可以通过他的电子邮件地址找到用户:

mail :to => @user.email, :subject => I18n.t('welcome_mail.subject')

这样做是个好主意吗?或者有没有更通用的方法来创建这样的helper方法?

9nvpjoqh

9nvpjoqh1#

您可以在actionview中使用@_message,它允许您访问message对象,您可以从该对象访问“to”,“from”等字段。
我有一个情况下,我需要一个取消订阅按钮上的所有邮件,所以把它放在我的布局,这是跨邮件使用.我使用上述解决方案,找到邮件接收者和实现取消订阅各自的邮件.

xfyts7mz

xfyts7mz2#

使用message.to

message.to #=> steve@apple.com

您还可以访问fromsubject,这在将Mailer View的标题设置为与subject相同时非常方便。
这里是官方Rails文档的链接。

  • 我是在Rails 7上才发现这个问题的,所以它可能也适用于旧版本。如果有人能证实这一点,请评论或编辑这篇文章。*

相关问题