2016-06-09 37 views
0

我正在開發一個活躍網站的沙盒版本。該網站的沙箱版本指向一個不同的域名。我正在使用我的郵件程序中使用config.action_mailer.default_url_options的值生成URL的電子郵件。我可以將ActionMailer的default_url_options設置爲request.base_url或request.domain嗎?

config/environments/production.rb我有作爲主機的活動網站的域名。我想在它從request.domain或request.base_url獲取值的地方進行更改。這可能嗎?如果是的話,我如何寫主機的價值?我嘗試了以下方法,但在執行rake命令時出錯。

config.action_mailer.default_url_options = { :host => "#{request.base_url}" } 

    config.action_mailer.default_url_options = { :host => request.base_url } 

NameError: undefined local variable or method `request' for #<myrailsappname::Application:0x007faafc702bb0> 
Did you mean? require 

我已經做了網頁搜索,並沒有發現在那裏我可以用request.base_urlrequest.domain任何例子。

回答

1

,你可以嘗試這個..

在application_controller.rb的before_filter添加:

的ActionMailer :: Base.default_url_options = {:主機=> request.host_with_port}

另一種方式是..

類UserMailer <的ActionMailer :: Base的

def welcome_email(user, request) 
    @user = user 
    @url = user_url(@user, host: request.host_with_port) #option2 (do this for each link) 
    mail(:to => user.email, 
     :subject => "Welcome to My Awesome Site") 
    end 
end 
+0

謝謝!我一直在尋找並在另一篇博文中找到你的解決方案。我正在運行Ruby on Rails 4,它使用before_action而不是before_filter。我在兩個初始化程序中都註釋掉了配置語句,它運行良好!看來你不能在配置文件中使用request.anything。 –

相關問題