Rails中ActionMailer执行报错:缺失user_mailer/welcome模板
问题原因与解决办法
你遇到的Missing template错误,核心是Rails找不到UserMailer#welcome方法对应的邮件内容模板。
在Rails的ActionMailer机制里,每个邮件发送方法(比如你写的welcome)都需要在app/views/[mailer名称]/目录下,有同名的视图文件来定义邮件的具体内容——你现在只创建了邮件的布局模板(layouts里的mailer.html.erb是所有邮件共用的框架),但缺少welcome方法对应的内容模板。
解决步骤:
- 先在项目里创建
app/views/user_mailer目录(因为你的mailer是UserMailer,对应这个视图目录) - 在该目录下创建两个模板文件(至少创建一个,建议两个都做,适配不同邮箱客户端):
- HTML格式模板:
app/views/user_mailer/welcome.html.erb
示例内容:<h1><%= @greeting %></h1> <p>这是你的欢迎邮件,很高兴你能来!</p> - 纯文本格式模板:
app/views/user_mailer/welcome.text.erb
示例内容:<%= @greeting %> 这是你的欢迎邮件,很高兴你能来!
- HTML格式模板:
完成后重新执行UserMailer.welcome.deliver_now,错误就会消失。
内容的提问来源于stack exchange,提问作者jlandie
相关产品推荐
相关产品推荐

