我有一个网络应用程序:Angular中的前端和Rails中的后端。
我有一个自定义域[
{
"id": "a",
"name": "AA",
"child": [
{
"id": "b",
"name": "BB"
"child": [
{
"id": "x",
"name": "XX"
}
]
},
{
"id": "c",
"name": "CC"
}
]
}
]
,并将用户重定向到heroku网址(www.example.com
)。
用户注册后,需要确认他们的电子邮件。当他们从我的网络应用收到电子邮件时,他们会点击该链接。顺便说一下,我使用Devise来确认用户的电子邮件。
它应该将用户带到example.herokuapp.com
。但是,出于某种原因,用户被带到www.example.com/log_in
。如何将此用户重定向到自定义域?
答案 0 :(得分:6)
要执行此操作,您要覆盖环境配置文件中的default_url_options
。例如,在您的config/environments/production.rb
中,您可能需要以下内容:
config.action_mailer.default_url_options = {
host: 'http://www.example.com'
}
config.action_mailer.asset_host = 'http://www.example.com'
无论你设置什么host
default_url_options
将成为通过ActionMailer发送的电子邮件中包含的任何链接的主机(这包括设计确认/密码重置电子邮件)。 asset_host
用作您放入电子邮件中的任何资产(例如图像)的主机,以便可以正确找到它们。
答案 1 :(得分:0)
以防万一其他人是像我这样的白痴,我花了数小时试图弄清楚为什么我的用户确认链接对开发有效,但对生产无效。确认链接会将我重定向到我的登录页面,而不会出现错误。
我将我的域托管在Google域上,并且裸域转发到了“ www”。在我的config / environments / production.rb文件中,将主机设置为裸域:
host: 'example.com'
问题出在我的Google域设置中。它正在重定向域,但未转发路径,因此直接重定向到了我的登录页面。确保您还转发路径或在主机设置中包含www:
host: 'www.example.com'