Как использовать текущий поддомен в помощниках URL - PullRequest
2 голосов
/ 11 декабря 2010

У меня есть помощник по URL от Devise следующим образом:

account_confirmation_url(@resource, :confirmation_token => @resource.confirmation_token)

Как мне сделать так, чтобы он создавал URL с текущим поддоменом, а не только с основным поддоменом?

Ответы [ 3 ]

13 голосов
/ 21 февраля 2011

Основное решение, описанное в вики Devise, не работает для настройки произвольных поддоменов и является проблемой, если вы запускаете генерацию электронной почты во время запроса в одном поддомене (или корневом домене вашего приложения) и хотите ссылкив сообщении электронной почты для ссылки на другой поддомен.

Общепринятый способ заставить его работать - это предоставить url_for помощнику параметр :subdomain.

# app/helpers/subdomain_helper.rb

module SubdomainHelper
  def with_subdomain(subdomain)
    subdomain = (subdomain || "")
    subdomain += "." unless subdomain.empty?
    host = Rails.application.config.action_mailer.default_url_options[:host]
    [subdomain, host].join
  end

  def url_for(options = nil)
    if options.kind_of?(Hash) && options.has_key?(:subdomain)
      options[:host] = with_subdomain(options.delete(:subdomain))
    end
    super
  end
end

Следующий шаг -решающее значение, и я подозреваю, что это - то, где много людей сбито с толку (я знаю, что сделал).Убедитесь, что Devise смешивает ваш новый вспомогательный субдомен с объектами почтовой программы, добавив следующий код в config/application.rb

  config.to_prepare do
    Devise::Mailer.class_eval do 
      helper :subdomain 
    end
  end

Теперь, когда вы делаете link_to в своем шаблоне почтовой программы Devise, вы можете легко указать:subdomain опция.

link_to 'Click here to finish setting up your account on RightBonus',
  confirmation_url(@resource, :confirmation_token => @resource.confirmation_token, :subdomain => @resource.subdomain)
3 голосов
/ 12 декабря 2010

Попробуйте передать его: host => 'yoursub.domain.com'

0 голосов
/ 01 января 2011

Вы можете посмотреть на вики Devise: https://github.com/plataformatec/devise/wiki/How-To:-Send-emails-from-subdomains

...