我正在尝试设置我的ActionMailer,以便它将读取从中发布的URL。部署此应用程序时,它可能最终会出现在具有不同域名的许多不同服务器上。我没有让用户进入代码并强制静态输入URL,而是希望重置密码url包含从中生成的域(包括http://或https://)。
我在邮件程序中尝试了::Rails.root
,request.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
答案 0 :(得分: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
不要忘记更新Controller的代码。