如何使用domain.name设置'config.action_mailer.default_url_options'的值?

时间:2012-07-14 15:04:45

标签: ruby-on-rails ruby-on-rails-3 configuration actionmailer

我必须为我的设计用法设置这个 但我的应用程序允许用户通过2个域访问 我想设置'config.action_mailer.default_url_options = {:host =>'与用户访问的域。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

如果要实现的是您发送的电子邮件中的URL是使用当前主机或域构建的,则default_url_options方法将不起作用,因为它仅在应用程序启动时设置一次 - 请求对象不可用在该上下文AFAIK中,但仅限于控制器操作。

您可以尝试在邮件程序类中的电子邮件中生成网址而不使用默认主机,如下所示(未经测试):

class Mailer < ActionMailer::Base

  def welcome(user, host)
    @url = url_for(host: host, controller: ..., action: ...) 
    # construct rest of email here 
  end

end

然后从您的控制器使用请求中的相应主机调用它:

Mailer.welcome(current_user, request.host).deliver