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

Can I Set default_url_options for ActionMailer to request.base_url or request.domain?

我正在开发一个活跃网站的沙盒版本。该网站的沙盒版本指向不同的域名。我正在处理使用我的邮件程序中 config.action_mailer.default_url_options 的值生成 URL 的电子邮件。

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 的示例。

你可以试试这个..

在 application_controller.rb before_filter 添加:

ActionMailer::Base.default_url_options = {:host => request.host_with_port}

另一种方式是..

class 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