由于各种原因,我使用Mandrill API来处理我的交易电子邮件。我遇到的一个问题是在新邮件程序中生成confirmation_url,edit_password_url和unlock_url。我在新的邮件程序中包含Devise的URL帮助程序。正确生成电子邮件中的其他所有内容。
我收到以下错误:
NoMethodError (undefined method `main_app' for #<DeviseMailer:0x007f812b6abe78>):
app/mailers/devise_mailer.rb:15:in `confirmation_instructions'
app/controllers/lenders/registrations_controller.rb:9:in `create'
devise_mailer.rb
class DeviseMailer < MandrillMailer::TemplateMailer
helper :application
include Devise::Controllers::UrlHelpers
default from: 'no-reply@test.com'
def confirmation_instructions(record, token)
mandrill_mail template: 'Confirmation Instructions',
subject: 'Confirm Email',
from_name: 'Test',
to: { email: record.email },
vars: {
'FNAME' => record.first_name,
'LIST_COMPANY' => "Apples",
'HTML_LIST_ADDRESS_HTML' => "1 Infinite Loop",
'CONFIRMATION_LINK' => confirmation_url(record, :confirmation_token => token)
}
end
end
感谢您的帮助
答案 0 :(得分:1)
对于遇到此问题的任何人 - 在使用mandrill_mailer替换devise的客户邮件时,我遇到了同样的问题。
使用上面的例子,我就这样修好了
class DeviseMailer < MandrillMailer::TemplateMaile
# ..... mailer code in here here .....
private
def main_app
Rails.application.routes.default_url_options[:host] = Rails.application.routes.default_url_options[:host]
Rails.application.routes.url_helpers
end
end