0

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

我已经尝试过::Rails.rootrequest.host_with_port 并且::Rails.root_path在 Mailer 中,但没有一个产生结果。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
4

1 回答 1

1

我假设您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

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

于 2013-02-16T13:15:05.633 回答