使用{:locale =&gt; [:en]缺少模板布局/ <custom_mailer_name>

时间:2018-01-18 13:38:58

标签: ruby-on-rails

我在运行ruby应用程序时遇到错误。

18:46:35 resque.1 | Missing template layouts/test_mailer with 
{:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, 
:html, :builder, :ruby]}. Searched in:
  18:46:35 resque.1 |   * "/home/administrator/<PROJECT_PATH>/app/views"
  18:46:35 resque.1 |   * "/home/administrator/.rvm/gems/ruby2.4.1/gems/devise_token_auth-0.1.39/app/views"
  18:46:35 resque.1 |   * "/home/administrator/.rvm/gems/ruby-2.4.1/gems/devise-4.2.0/app/views

在Rails中具有Angular和后端的单独UI的应用程序。 我正在使用邮件程序向用户发送邮件。

我发现了一个类似的问题,但我猜它仍然不符合我的要求。 Link 我已经在mailers文件夹中创建了test_mailer.rb,并且还在views文件夹下使用了特定于test_mailer.rb的布局。

我仍然遇到上述错误。

更多信息:

寄件人/ test_mailer.rb

class TestMailer < ActionMailer::Base
default from: 'test@gmail.com'
    layout 'test_mailer'
    def mail_notification(user, filename)
      @user = user
      @filename = filename

      mail(
        to: user.email,
        subject: "Testing Mail"
      )
    end
  end

视图/ test_mailer / mail_notification.html.erb

<!DOCTYPE html>
  <html>
    <head>
      <meta content='text/html; charset=UTF-8' http-equiv='Content-Type' />
    </head>
    <body>
    <Mail_Text>  
    </body>
  </html>

1 个答案:

答案 0 :(得分:1)

错误是缺少邮寄的布局。

Missing template layouts/test_mailer with 
{:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, 
:html, :builder, :ruby]}

mailers/test_mailer.rb的第三行声明layout 'test_mailer

它在test_mailer.html.erb文件夹中查找views/layout。您必须使用简单的HTML Body创建此文件,如:

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style>
      /* Email styles need to be inline */
    </style>
  </head>

  <body>
    <%= yield %>
  </body>
</html>

现在mail_notification.html.erb只保留电子邮件内容并删除html正文,它将从布局文件中获取。

<强>更新: 您可能会感到困惑,因为您的布局名称和邮件程序类是相同的。只是为了理解您可以将邮件程序布局名称重命名为mailer_layout: 即:

class TestMailer < ActionMailer::Base
    default from: 'test@gmail.com'
    layout 'mailer_layout'

    def mail_notification
    ...
    end
end

现在您需要以下观点:

  

应用程序/视图/布局/ mailer_layout.html.erb

     

应用程序/视图/ test_mailer / mail_notification.html.erb