Die wichtigste Lösung im Wiki beschrieben Devise nicht funktioniert für beliebige Einstellung Subdomains und ist ein Problem, wenn Sie die Generierung von E-Mails während einer Anfrage in einer Subdomain (oder der Stammdomäne Ihrer Anwendung) auslösen und möchten, dass die Links in der E-Mail auf eine andere Subdomain verweisen.
Der allgemein akzeptierte Weg, um es zum Laufen zu bringen, ist, dem url_for
Helfer eine :subdomain
Wahl zu geben.
# 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
Der nächste Schritt ist entscheidend, und ich vermute, es ist, wo eine Menge Leute aufstehen ausgelöst (ich weiß, ich habe). Stellen Sie sicher, dass Ihre Devise mischt neue Sub-Domain-Helfer in seine Mailer Objekte indem Sie den folgenden Code zu config/application.rb
config.to_prepare do
Devise::Mailer.class_eval do
helper :subdomain
end
end
Nun, wenn Sie einen link_to
in Ihrer Devise Mailer-Vorlage zu tun, können Sie einfach eine :subdomain
Option angeben.
link_to 'Click here to finish setting up your account on RightBonus',
confirmation_url(@resource, :confirmation_token => @resource.confirmation_token, :subdomain => @resource.subdomain)
Ich denke, er will es automatisch geschehen. –