我正在try 设置:host for action mailer默认url选项.

我在所有环境文件中都设置了以下内容

config.action_mailer.default_url_options = {
  :host => "localhost"
}

我希望通过提供请求主机使其更具动态性.

当我试着设定

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

config.action_mailer.default_url_options = {
  :host => request.env["SERVER_NAME"]
}

它抛出错误...无法识别"请求"对象

有没有什么方法可以将其设置为请求主机,而不是通过硬编码...?

推荐答案

通过在default_url_options散列中设置:host选项,还可以设置将在所有邮件程序中使用的默认主机

application_controller.rb加上:

class ApplicationController < ActionController::Base
  def default_url_options
    { host: request.host_with_port }
  end
end

资料来源:https://edgeguides.rubyonrails.org/action_controller_overview.html#default-url-options

或者,当从控制器调用mailer函数时,可以传递request

class UserMailer < ActionMailer::Base

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

资料来源:https://guides.rubyonrails.org/action_mailer_basics.html#generating-urls-with-named-routes

Ruby-on-rails相关问答推荐

Rails:has_many 通过不返回结果

为什么有时会出现类型错误没有将 StringIO 隐式转换为 String?Ruby /导轨

在 Rails 7 中,可以将导入映射与 js Bundle 解决方案一起使用,还是它们是专有的?

Rails 4 中的 null_session 和 reset_session 有什么区别?

File.open,写入和保存?

为什么在保存对象后使用重新加载方法? (Hartl Rails Tut 6.30)

如何避免 has_many :through 关系中的重复?

Rails - 使用 %W

单击表格行(使用 bootstrap 程序)时,如何使用模式显示数据?

URL中的Rails点而不是斜杠

Rails:仅当值存在时如何验证格式?

如何显示 RSpec 测试生成的 SQL 查询日志(log)?

Rails:使用 link_to 创建不带 href 的链接

Rails Activeadmin - 自定义关联 Select 框

在 Rails 应用程序中处理大文件上传的最佳方法是什么?

默认呈现 JSON 而不是 HTML?

何时使用 Helpers 而不是 Partials

Rails 3 设计,current_user 在模型中不可访问?

错误:无法在 Mavericks 上构建 gem 原生扩展

在 Rails 中显示主机名和数据库名