【问题标题】:How do you access the session from within an ActionMailer class?如何从 ActionMailer 类中访问会话?
【发布时间】:2009-09-23 18:12:25
【问题描述】:

我有一个应用程序可以从 2 个不同的 URL 访问,并且外观/行为略有不同,具体取决于您用于访问它的 URL。我可以通过在会话对象中存储一个值并根据它做出一些决定来做到这一点,例如从哪个路径视图加载。

在我需要在电子邮件中发送不同的 URL 之前,这种方法似乎可行。在从 ActionMailer 继承的类中,我需要根据会话变量的值设置 default_url_options[:host]。当我从邮件程序中的任何位置调用 session 时,Rails 会引发以下错误:

ApplicationMailer:Class 的未定义局部变量或方法“会话”

处理此问题的不太理想的方法是将会话变量传递给我的邮件程序调用。我宁愿不这样做,因为它看起来不是很干燥,并且需要对我的大部分代码进行更改。

【问题讨论】:

    标签: ruby-on-rails session actionmailer


    【解决方案1】:

    无论您是否可以将会话的引用硬塞到邮件中,我认为您已经找到了正确的解决方案。出于几个原因,传递您想要使用的上下文会更好。

    1. 邮件发送者一开始可能不应该知道会话。
    2. 假设有一天您必须发送大量邮件,并对其进行批处理。您将立即回到您现在所在的位置 - 必须在您的上下文中传递。

    【讨论】:

      猜你喜欢
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-11
      • 2014-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多