我正在尝试学习如何使用rails mailers。
我制作了一个邮件文件夹,里面有一个名为user_mailer.rb的文件夹。它有:
class UserMailer < ActionMailer::Base
layout 'transactional_mailer'
def user_invite
mail(
:subject => "You've been invited to join a research project team",
:to => 'test@tester.com',
:from => 'test@tester.com'
)
end
end
在transactional_mailer.html.erb的布局中,我有:
<!DOCTYPE html>
<%= yield %>
<style>
body {
margin:0;
padding:0
}
</style>
然后,在我的观看/ Users / user_invite.html.erb
中 嗨,当我保存所有这些并在我的控制台中尝试时,写下:
UserMailer.user_invite.deliver_now
我收到错误消息:
UserMailer#user_invite: processed outbound mail in 65.4ms
ActionView::MissingTemplate: Missing template user_mailer/user_invite with "mailer". Searched in:
* "user_mailer"
我不知道此错误消息的含义或我如何解决此问题。谁能看到我做错了什么?
我还尝试在我的views目录下创建一个名为&#39; user_mailer&#39;的文件夹。在该文件夹中,我尝试添加一个名为user_invite.html.erb的文件 - 但它也不起作用。
答案 0 :(得分:0)
问题在于:
您必须将视图user_invite.html.erb
放在views/user_mailer/user_invite.html.erb
而不是views/users/user_invite.html.erb
如果您创建了邮件程序,请手动删除它并从控制台尝试
$ rails g mailer user user_invite
然后会自动出现一个名为user_invite的新def,并在user_mailer文件夹中查看。
我希望现在有效
答案 1 :(得分:0)
尝试从应用程序邮件程序中定义布局。
class ApplicationMailer < ActionMailer::Base
default from: 'Example <noreply@example.com>'
layout 'transactional_mailer' #app/views/layouts/transactional_mailer.html.erb
end