Devise邮件模板路径

8 篇文章 0 订阅
1 篇文章 0 订阅

以重置密码发送的邮件为例:

devise发送邮件的模板在:[项目]/app/views/devise/mailer/reset_password_instructions.html.erb

如果此路径下不存在对应的模板则会去默认路径找

默认路径是/usr/local/rvm/gems/ruby-2.3.3/gems/[devise版本]/app/views/devise/mailer/reset_password_instructions.html.erb

Devise版本处以具体环境为准(在发送邮件时的控制台可以看到准备渲染的模板路径信息)

如果默认路径还是没有reset_password_instructions的话就会产生Template is missing错误,Devise的模板名称是被事先约定的,改变模板名称也会导致找不到模板,如果想自定义邮件模板名称必须重写Devise邮件发送相关的方法
devise/mailer.rb
如图,修改/usr/local/rvm/gems/ruby-2.3.3/gems/[devise版本]/app/mailers/devise/mailer.rb以后,Devise将会在两种路径中寻找reset_password_instructions_zh.html.erb,默认的模板名将无法找到。

除了在gem里面修改还有一种更好的方法:在[项目]/app/mailers新建devise文件夹,然后新建mailer.rb在这里重写mailer.rb,之后rails会自动到这里寻找Devise::Mailer,这样避免了对gem的修改。

如果不想重写mailer.rb,可以新建my_mailer.rb,然后在其中继承Devise::Mailer:

# [项目]/app/mailers/devise/my_mailer.rb
class Devise::MyMailer < Devise::Mailer
	xxxx
end

然后在devise.rb配置config.mailer = "Devise::MyMailer"。可参考这里

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值