【问题标题】:How do I add instance variables to Devise email templates?如何将实例变量添加到设计电子邮件模板?
【发布时间】:2014-12-30 00:59:39
【问题描述】:

我正在尝试编辑confirmation_instructions.html.erb 文件以使用名字而不是电子邮件来称呼新用户。

当前文件的开头读取...

嗨,,

如何将实例变量@first_name 添加到控制器/邮件程序?

我运行 rails generate devise:controllers users,但我没有看到任何 .rb 文件,我可以在其中将实例变量添加到确认邮件(如果有的话)

谢谢

【问题讨论】:

    标签: ruby-on-rails-4 devise devise-confirmable


    【解决方案1】:

    这很简单,您只需为此创建一个 Mailer:

    class ConfirmationsMailer < Devise::Mailer
      default from: '<no-reply@example.com>'
    
      def confirmation_instructions(record, token, opts={})
       @token = token
       #you can add your instance variables here
       devise_mail(record, :confirmation_instructions, opts)
      end
    end
    

    然后告诉 Devise 使用这个类:

    config/initializers/devise.rb

    Devise.setup do |config|
    ...
    config.mailer = 'ConfirmationsMailer'
    ...
    end
    

    重启服务器,一切顺利!

    【讨论】:

    • 你能举个例子说明如何从用户模型中获取属性吗?例如以下不工作 @first_name = current_user.first_name
    • 不使用current_user,您可以只使用方法中的record 参数,所以在您的情况下@first_name = record.first_name
    • 我来这里是说我用@first_name = record.first_name 弄清楚了,然后看到了你的帖子。感谢您的帮助
    • 在哪里可以找到 opts={}
    • 你可以在这里找到它 github.com/plataformatec/devise/blob/… 但基本上是电子邮件的标题,例如主题、发件人、发件人等
    猜你喜欢
    • 2020-05-18
    • 2014-01-16
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 2015-04-06
    • 2014-09-13
    • 2014-11-11
    相关资源
    最近更新 更多