设计忘记密码是否在产品上创建了与localhost的链接?

时间:2011-10-26 00:36:05

标签: ruby-on-rails ruby-on-rails-3 devise

我们正在使用标准设计忘记密码邮件:

<p>Hello <%= @resource.email %>!</p>

<p>Someone has requested a link to change your password, and you can do this through the link below.</p>

<p><%= link_to 'Change my password', edit_password_url(@resource, :reset_password_token => @resource.reset_password_token) %></p>

在生产时,这会生成更改密码的本地主机URL:

http://localhost:3000/users/password/edit?reset_password_token=amqs2q9NcM1FerHKhmzV

这很奇怪,因为production.rb文件有我们的域名:

config.action_mailer.default_url_options = { :host => 'mysite.com' }

为什么没有在网址中使用mysite.com?想法?

由于

3 个答案:

答案 0 :(得分:17)

我的猜测是config.action_mailer.default_url_options被某处覆盖了。你有config/initializers中影响ActionMailer的文件吗?

尝试在生产框上运行rails console并查看

ActionMailer::Base.default_url_options[:host]

回报。

答案 1 :(得分:1)

我的问题出在 config / initializers / setup_mail.rb

答案 2 :(得分:0)

我通过简单地将port添加到config.action_mailer.default_url_options来解决此问题,Devise总是告诉我们在安装过程中要这样做,但是我们很多人都忽略了它。

config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

无论如何,这是针对development.rb的。

在生产中,端口的值将是一个变量-$PORT,cos Heroku将动态生成端口。