gpt4 book ai didi

ruby-on-rails - 如何在 url 助手中使用当前子域

转载 作者:行者123 更新时间:2023-12-04 05:46:14 25 4
gpt4 key购买 nike

我有一个来自 Devise 的 url 助手,如下所示:

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

如何让它使用当前子域而不是主子域创建 url?

最佳答案

Devise wiki 中描述的主要解决方案不适用于设置任意子域,如果您在一个子域(或应用程序的根域)中的请求期间触发生成电子邮件并想要链接,则会出现问题在电子邮件中引用不同的子域。

普遍接受的让它工作的方法是给 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

下一步很关键,我怀疑这是很多人被绊倒的地方(我知道我被绊倒了)。通过将以下代码添加到 config/application.rb

,确保 Devise 将您的新子域助手混合到其邮件程序对象中
  config.to_prepare do
Devise::Mailer.class_eval do
helper :subdomain
end
end

现在,当您在 Devise 邮件程序模板中执行 link_to 时,您可以轻松指定 :subdomain 选项。

link_to 'Click here to finish setting up your account on RightBonus',
confirmation_url(@resource, :confirmation_token => @resource.confirmation_token, :subdomain => @resource.subdomain)

关于ruby-on-rails - 如何在 url 助手中使用当前子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4418377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com