Rails 4 - Mailer无法找到模板

时间:2016-08-05 00:53:32

标签: ruby-on-rails ruby actionmailer

我正在尝试学习如何使用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的文件 - 但它也不起作用。

2 个答案:

答案 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