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

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

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

我怎样才能做到这一点?

最佳答案

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

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

class Mailer < ActionMailer::Base

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

end

然后使用请求中的适当主机从您的 Controller 调用它:
Mailer.welcome(current_user, request.host).deliver

关于ruby-on-rails - 如何使用 domain.name 设置 'config.action_mailer.default_url_options' 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11484790/

相关文章:

ruby-on-rails - 在 ActiveAdmin 索引页底部插入自定义元素

ruby-on-rails - 我如何在 Rails 迁移中创建一个接受 18 位数字的中间件?

ruby-on-rails - UTF-8 问题中的 Rails ActiveRecord 无效字节序列

ruby-on-rails - 在 Rails 3.1 中可以使用 << 运算符插入多个对象吗?

configuration - 如何为每个应用程序运行创建新的日志文件

ruby-on-rails - self.new_with_session(params, session) 在这种情况下做什么

javascript - 为 Backbone 轨道应用程序构建自定义协议(protocol)

python - Django 无法检测模型字段的存在

unix - 如何通过 Connect :Direct NDM? 传输二进制文件

ruby-on-rails - rails/ruby "and return false"语法