繁体   English   中英

发送ActionMailer电子邮件时返回根URL

[英]Return root url when sending ActionMailer email

我正在尝试设置我的ActionMailer,以便它将读取从其发布的URL。 部署此应用程序后,它可能最终在具有不同域名的许多不同服务器上。 与其让用户进入代码并强制静态输入URL,不如希望重置密码URL包含其生成域(包括http://或https://)。

我已经在Mailer中尝试了::Rails.rootrequest.host_with_port::Rails.root_path ,但是没有一个产生结果。 request.host_with_port生成未定义的方法错误。

  def reset_password_email(user)
    @user = user
    @url  = "#{::Rails.root_path}/password_resets/#{user.reset_password_token}/edit"
    mail(:to => user.email,
         :subject => "Your password has been reset")
  end

我假设您从一个应用程序控制器中调用reset_password_email(user)

您可以更新此方法定义,并向用户发送当前的主机和端口:

def reset_password_email(user, request)
  @user = user
  @url  = "#{request.protocol}#{request.host_with_port}/password_resets/#{user.reset_password_token}/edit"
  mail(:to => user.email, :subject => "Your password has been reset")
end

不要忘记更新控制器的代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM