1

我正在向用户发送电子邮件,我需要调用我的 ApplicationController 中的一个函数。看起来很简单,但我一生都找不到任何关于如何做到这一点的文档。我可以很好地访问 ApplicationHelper 功能,但这对我需要它做的事情并没有多大帮助......任何人都可以对这个主题有所了解吗?

4

2 回答 2

3

所以不确定这是否会帮助任何人,因为这是一个高度特定于项目的案例,但这是我为解决这个问题所做的工作:

  1. 将邮件程序所需的功能移至 ApplicationHelper。
  2. 添加include ApplicationHelper到 Mailer 类和我的 ApplicationController。
  3. 对于我需要if !provider_signed_in?更新的逻辑,if defined?(provider_signed_in?) && !provider_signed_in?以便它不会返回未定义的方法错误......如果提供者登录,我需要的逻辑与邮件程序无关(因为提供者永远不会收到这封电子邮件),所以它在那里并不重要,即使它在我在网站上使用它的其他任何地方都很重要。

感谢 Rahul 帮助我思考这个问题。

于 2014-02-03T17:28:45.950 回答
0

有一种方法称为helper,您可以在您的邮件程序中使用它来将您的助手包含在您的邮件程序中。

# mailer_helper.rb

module MailerHelper
  def your_method
    # do whatever you want to do here.
  end
end

# in your mailer file

class WelcomeMailer < ActionMailer::Base
  helper MailerHelper
  .....
end

仅此而已,现在您也可以使用视图中的方法。

于 2014-02-03T06:19:09.730 回答