【问题标题】:Devise custom mailer using Sendgrid使用 Sendgrid 设计自定义邮件程序
【发布时间】:2016-04-06 13:20:29
【问题描述】:

我想在用户注册我的网站时使用 Sendgrid 模板向他们发送欢迎电子邮件。我已经签出:Devise's How-to Use customer mailer 并且已经完成了前几个步骤,但是,我被困在哪里放置 confirmation_instructions 方法,因为我需要能够放入一些自定义信息和替换变量以通过.我也在使用设计生成的控制器controllers/users/...

这是我目前所拥有的:

自定义类:models/devise_mailer.rb

class DeviseMailer < Devise::Mailer
  helper :application
  include Devise::Controllers::UrlHelpers
  default template_path: 'devise/mailer'
end

config/initializers/devise.rb

添加:config.mailer = "DeviseMailer"

现在从这里开始,我应该做如下的事情,但我不知道该放在哪里。我需要制作自定义控制器吗?如果是这样,我如何确保新用户注册使用该方法?:

def confirmation_instructions(record, token, opts={})
  headers["Custom-header"] = "Bar"
  super
end

我离这儿很远吗?

【问题讨论】:

    标签: ruby-on-rails ruby devise


    【解决方案1】:

    放在这里:

    class DeviseMailer < Devise::Mailer
      helper :application
      include Devise::Controllers::UrlHelpers
      default template_path: 'devise/mailer'
    
      def self.confirmation_instructions(record, token, opts={})
        new(:confirmation_instructions, record, token, opts)
      end
    end
    

    (注意改变方法)

    然后像这样从任何控制器调用它:

    current_user.send_confirmation_instructions
    

    【讨论】:

    • 好吧,这是有道理的......所以,奇怪的是,我的设计注册控制器中没有 def create 方法。那么,当用户注册时,是什么驱动它呢?控制器是在其他地方还是在其他地方支持设计脚本?
    • @Godzilla74 注册控制器位于设计本身。如果我们想要覆盖设计中的基本功能,我们只会生成另一个registration_controller.rb 文件。除了深入研究 Devise 之外,自己更难看到它,但许多用户已经这样做了,所以这就是为什么有这么多不同的资源告诉如何用它做某事的原因。
    猜你喜欢
    • 2016-07-27
    • 2016-12-08
    • 2013-09-12
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 2012-09-03
    相关资源
    最近更新 更多