Учитывая, что объект request
не работает в ActionMailer
, есть ли способ определить текущий URL-адрес и установить опцию from
для настраиваемого контроллера почтовой рассылки?Указать почтовый пользовательский домен из опции
Так это то, что я до сих пор в application_controller.rb
:
before_filter :images, :hide_sidebar, :global_vars, :set_mailer_host
before_action :sidebar_menu
def set_mailer_host
ActionMailer::Base.default_url_options[:host] = request.host_with_port
@host = request.env['HTTP_HOST'] unless request.env['HTTP_HOST'].include? 'localhost'
end
Разрабатывают Mailer пользовательский класс:
class DeviseMailer < Devise::Mailer
helper :application # gives access to all helpers defined within `application_helper`.
include Devise::Controllers::UrlHelpers # Optional. eg. `confirmation_url`
def confirmation_instructions(record, token, opts={})
if record.events.present?
name = record.events.last.name
@event = name
else
name = "#{record.first_name},"
end
opts[:from] = "[email protected]#{@host}" if @host
opts[:subject] ="#{name} Registration - Confirmation Required"
super
end
end
Также в Devise.rb я установил ниже:
config.mailer = 'DeviseMailer'
Я не знаю, почему я по-прежнему получаю домен по умолчанию вместо текущего URL.
Поскольку у меня есть несколько URL-адресов, указывающих на одно и то же приложение, есть ли способ обнаружить это и настроить для Devise Mailers?
привет, с какого контроллера я бы прошел в качестве аргумента? Боюсь, это можно было бы назвать дважды, а также первыми тремя параметрами переписать –