在 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 非常相似,您从未明确创建邮件程序的实例。相反,您作为类与它们交互。 new
在 ActionMailer::Base
中被标记为私有(private),并且对该类的方法调用随后通过 method_missing
路由到其自身的新实例。就像我说的,不直观。
查看 guides 和 api docs 以获取有关正确使用 ActionMailer 的更多信息。
关于ruby - 为 MyReminderMailer 调用的私有(private)方法 `new' :Class,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21563186/