设计确认链接将用户重定向到heroku域而不是自定义域

时间:2016-06-14 08:03:34

标签: ruby-on-rails angularjs heroku devise

我有一个网络应用程序: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。如何将此用户重定向到自定义域?

2 个答案:

答案 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'