Rails调用UserMailer.welcome.deliver_now报错:未初始化常量UserMailer
解决UserMailer未定义及welcome方法不存在的问题
在控制台执行UserMailer.welcome.deliver_now时,先后遇到两个错误:
- 先抛出
welcome方法未定义的错误 - 随后出现:
(irb):6:in '<main>': uninitialized constant UserMailer (NameError),系统提示是否指UserMailerPreview
核心问题:邮件模板路径不符合Rails规范
Rails中ActionMailer的视图文件默认要求放在app/views/[mailer类名小写]/目录下,你当前把模板文件放在了app/user_mailer/,路径错误导致Mailer无法关联到对应的模板方法,同时控制台未重新加载代码时会触发常量未定义问题。
修复步骤:
调整模板文件位置
创建app/views/user_mailer/目录(如果不存在),然后将以下两个文件移动到该目录下:welcome_email.html.erbwelcome_email.text.erb
重新加载控制台代码
在irb中执行reload!命令,或者退出控制台后重新进入,确保UserMailer类被正确加载。验证修复效果
再次执行UserMailer.welcome.deliver_now,即可正常调用方法并发送邮件。
内容的提问来源于stack exchange,提问作者jlandie
相关产品推荐
相关产品推荐

