Rails 4 ActionMailer子域名网址

Nic*_*s.V 4 actionmailer ruby-on-rails-4

当rails 4应用程序托管在子域上时,例如sub.domain.com,如何在Action Mailer模板中获取URL以正确链接到子域?

配置/环境/ production.rb:

config.action_mailer.default_url_options = { :host => 'sub.domain.com' }
Run Code Online (Sandbox Code Playgroud)

动作邮件模板链接示例:

<%= user_url(@user) %>
Run Code Online (Sandbox Code Playgroud)

在电子邮件中,链接显示为www.domain.com/users/1而不是sub.domain.com/users/1

jim*_*gic 6

这实际上很容易.我解决这个问题的最好建议是你创建一个before_filter,它在ApplicationController.rb中的每个请求上设置它,如下所示:

before_filter :set_mailer_host

  def set_mailer_host
    ActionMailer::Base.default_url_options[:host] = request.host_with_port
  end
Run Code Online (Sandbox Code Playgroud)

  • 在Rails 4.2中,这个答案是线程安全的吗?我倾向于“不”,但是我都没有看到明确的证据 (2认同)