梅勒方法不被调用?
问题描述:
内部控制器:梅勒方法不被调用?
def update
@user.update({approved: true})
UserMailer.send_approved_mail(@user)
redirect_to(root_url)
end
内部user_mailer.rb
class UserMailer < Devise::Mailer
def send_approved_mail(user)
@resource = user
email_body = render "user_activated_mail"
if @resource.valid?
client = Postmark::ApiClient.new(ENV["POSTMARK_API_KEY"])
client.deliver(from: ENV["POSTMARK_SIGNATURE"],
to: @resource.email, subject: "User Activation information.",
tag: 'account-activated', :content_type => "text/html",
html_body: email_body)
end
end
end
在导轨4.1.0上述控制器方法被调用和被发送的电子邮件,但在轨道4.2在控制器中的邮件收发器的方法没有被调用,但从轨道控制台调用它的作品。我已经为邮戳api和配置文件做了所有必要的配置。唯一的事情是在rails 4.1.0中,控制器内部的mailer被调用,但是在rails 4.2中,它不起作用,但是在从rails控制台调用时会起作用。真正无法弄清楚的确切原因是什么。
答
你在这里看到的行为是对Rails 4.2引入了新的默认:
通过引入主动工作和#deliver_later的...的实例方法调用(在邮件)将被推迟到调用deliver_now或deliver_later。
查看Rails 4.2 upgrade guide了解更多详情。
虽然不要担心。您仍然可以使用邮戳与ActionMailer。 official Postmark Rails gem提供了与ActionMailer邮戳集成的插件。通过使用它,您应该能够编写您的邮件程序,就好像它们是常规的Rails邮件程序一样,而无需手动管理代码中的Postmark连接。
P.S.我在Wildbit(Postmark的创造者)工作。随时直接与我们联系。
谢谢!如果遇到问题,肯定会联系。 – codemilan 2015-04-02 05:14:43