我们正在使用标准设计忘记密码邮件:
<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?想法?
由于
答案 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将动态生成端口。