Mik*_*ton 16 host ruby-on-rails actionmailer url-for
我正在使用ActionMailer发送注册确认电子邮件.电子邮件需要包含一个返回网站的链接以验证用户,但我无法说服Rails生成完整的URL(包括域等).
我正在使用:
<%= url_for :controller => 'login', :action => 'verify', :guid => @user.new_user.guid, :only_path => false, :host => 'http://plantality.com' %>
Run Code Online (Sandbox Code Playgroud)
在我看来
在开发模式下,如果我没有在上面的链接中指定主机explicilty,则Rails会抱怨.但我不想在制作中这样做.有解决方案吗
Sim*_*tti 17
要解决在ActionMailer中传递主机以生成URL的问题,请查看此插件以及我编写它的原因.
要解决第一个问题,请在适用时使用命名路由.代替
<%= url_for :controller => 'login', :action => 'verify', :guid => @user.new_user.guid, :only_path => false, :host => 'http://plantality.com' %>
Run Code Online (Sandbox Code Playgroud)
假设路由被调用login,请使用
<%= login_url(:guid => @user.new_user.guid) %>
Run Code Online (Sandbox Code Playgroud)
请注意,我正在使用login_url,而不是login_path.
Kyl*_*ylo 12
我不确定它是否是您想要的,但在config/environments/development.rb中,您可以指定邮件程序URL的默认选项
config.action_mailer.default_url_options = {
:host => "your.host.org",
:port => 3000
}
Run Code Online (Sandbox Code Playgroud)
你可以在config/environments/production.rb中做同样的事情
我不知道为什么之前的解决方案看起来如此复杂,但既然我在这里为什么不给我2美分......
转到/config/environments并添加:
config.absolute_site_url = 'your site url'
对于相应的环境(即在development.rb,test.rb或production.rb中).重启Web服务器.
这允许您调用Rails.application.config.absolute_site_url以获取所需的URL.不需要插件或奇怪的作弊,只需将站点url存储为应用程序范围的变量.
| 归档时间: |
|
| 查看次数: |
18729 次 |
| 最近记录: |