2013-02-16 31 views
0

我正在嘗試設置我的ActionMailer,以便它讀取它從中發佈的URL。在部署此應用程序時,它可能會結束於具有不同域名的許多不同服務器。與其讓用戶進入代碼並強制靜態輸入URL,我希望重置密碼url包含從其生成的域(包括http://或https://)。發送ActionMailer電子郵件時返回根網址

我試過::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

請運行'rake routes'並向我們顯示輸出。 – weltschmerz 2013-02-16 11:24:16

回答

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 

不要忘記更新您的控制器的代碼。

+0

+1它實際上是使用'sorcery'寶石。我在控制器中使用'#{request.protocol}#{request.host_with_port}'與我的其他郵件程序。 – kobaltz 2013-02-16 13:59:34

相關問題