Как динамически изменить URL-адрес, используемый в accept_invitation_url в Devise Invitable?

Я использую Devise для приглашения. Мы используем разные субдомены, такие как test1.domain.com, test2.domain.com и т. Д. В одном приложении rails, и хотели бы, чтобы URL-адрес приглашения, который мы отправляем пользователям, отражал это.

Так как значение, кажется, основано на config var в config/production.rb:

config.action_mailer.default_url_options = { host: 'www.domain.com' }

Мне не ясно, какой лучший способ изменить URL-адрес, используемый в представлении электронной почты:

<%= link_to t("devise.mailer.invitation_instructions.accept"), accept_invitation_url(@resource, :invitation_token => @token) %>

Я не смог найти источник accept_invitation_url, поэтому я даже не уверен, где это установлено.

Любая помощь очень ценится!

1 ответ

Решение

Ошибка новичка:

Хитрость заключалась в том, чтобы прекратить пытаться найти этот вопрос как удобный для разработки вопрос, а более общий вопрос ActionMailer, который привел меня к этому простому решению: http://excid3.com/blog/change-actionmailer-email-url-host-dynamically/

В основном просто сбросьте URL в контроллере приложения с любой логикой, которую вы хотите:

 before_filter :set_mailer_host

 def set_mailer_host
    ActionMailer::Base.default_url_options[:host] = request.host_with_port
 end
Другие вопросы по тегам