我可以将ActionMailer的default_url_options设置为request.base_url或request.domain吗?

时间:2016-06-09 16:55:59

标签: ruby-on-rails actionmailer

我正在开发一个活跃网站的沙盒版本。该网站的沙箱版本指向不同的域名。我正在处理使用我邮件中index_merge(union)的值生成网址的电子邮件。

config.action_mailer.default_url_options中,我将活动网站的域名作为主机。我想在从request.domain或request.base_url获取值的地方更改它。这可能吗?如果是这样,我如何为主机写入值?我尝试了以下操作,但在执行rake命令时出错。

config/environments/production.rb

我已完成网络搜索,但未找到任何可以使用 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_url的示例。

1 个答案:

答案 0 :(得分:1)

你可以试试这个..

在application_controller.rb before_filter中添加:

ActionMailer :: Base.default_url_options = {:host =&gt; request.host_with_port}

另一种方式是..

类UserMailer&lt;的ActionMailer ::基

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