ede*_*ill 20 ruby-on-rails actionmailer hostname actioncontroller
我正在处理一个相当传统的忘记密码电子邮件 - 我想通过电子邮件向用户发送密码更改令牌,这些令牌嵌入在链接中,他们可以点击这些令牌来更改密码.我通过传统的ActionMailer发送电子邮件.
如果我使用普通的link_to标签
<%= link_to "click here", :controller => foo, :action => 'bar', :token => token %>
Run Code Online (Sandbox Code Playgroud)
我得到一个相对链接 - 相当无用的电子邮件.
如果我加入
:only_path => false
,然后它说我需要设置错误default_url_options[:host]
.ActionController文档暗示您通过覆盖控制器中的#default_url_options方法来实现这一点.当然有一个配置选项告诉Rails它的主机名是什么,而不添加我自己的配置文件,解析它等?
小智 36
default_url_options
可从config.action_mailer
,应该在你的环境中的配置文件进行设置.
例如,在config/environments/production.rb
:
config.action_mailer.default_url_options = {
:host => 'www.yourdomain.com'
}
Run Code Online (Sandbox Code Playgroud)
对于本地测试,请修改config/environments/development.rb
:
config.action_mailer.default_url_options = {
:host => '127.0.0.1',
:port => 3000
}
Run Code Online (Sandbox Code Playgroud)
然后,假设您有一个名为的路由forgot_password_login
,您可以使用以下内容在邮件程序中生成登录链接URL:
forgot_password_login_url(:token => 'a7s8q15sk2...')
Run Code Online (Sandbox Code Playgroud)
mcr*_*mcr 26
你可能想设置:protocol =>'https',顺便说一句.
config.action_mailer.default_url_options = {
:host => "portal.example.com",
:protocol => 'https'
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
26497 次 |
最近记录: |