在 Controller 中,我有:

mailer = MyReminderMailer.new

邮件程序如下所示:
class MyReminderMailer < ActionMailer::Base
  def change_email
    mail(
      from:     default_from,
      to:       default_to,
      subject: "..."
    )
  end

  def default_from
    return '...'
  end

  def default_to
    return '...'
  end
end

但出现错误:为 MyReminderMailer:Class 调用了私有(private)方法“new”

最佳答案

ActionMailer::Base 有一个相当愚蠢和不直观的 API。与 Controller 非常相似,您从未明确创建邮件程序的实例。相反,您作为类与它们交互。 newActionMailer::Base 中被标记为私有(private),并且对该类的方法调用随后通过 method_missing 路由到其自身的新实例。就像我说的,不直观。

查看 guidesapi docs 以获取有关正确使用 ActionMailer 的更多信息。

关于ruby - 为 MyReminderMailer 调用的私有(private)方法 `new' :Class,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21563186/

10-10 05:11