使用{:locale => [:en],:formats => [:html],

时间:2016-07-15 14:26:07

标签: ruby-on-rails ruby ruby-on-rails-3 web ruby-on-rails-5

我正在关注michael harlt rails教程,但我收到此错误

  

缺少模板布局/邮件包含{:locale => [:en],:formats => [:html],:variants => [],:handlers => [:raw,:erb, :html,:builder,:ruby,:coffee,:jbuilder]}。搜索:*“/ home / ubuntu / workspace / app / views”

预览帐户激活时

这是我的user_mailer.rb

class UserMailer < ApplicationMailer

  def account_activation(user)
    @user = user
    mail to: user.email,  subject: "Account activation"
  end

  def password_reset
    @greeting = "Hi"

    mail to: "to@example.org"
  end
end

并且错误突出显示

mail to: user.email,  subject: "Account activation"

我尝试在user_mailer.rb中添加layout'mailer',但它不起作用。

编辑: Here is the screenshot of the error

The screenshot of my folders

6 个答案:

答案 0 :(得分:6)

我遇到了同样的问题,如果我评论了布局&#39; mailer&#39;它似乎对我有用。 application_mailer中的行

例如

class ApplicationMailer < ActionMailer::Base
  default from: 'noreply@taskflow.herokuapp.com'
  # layout 'mailer'
end

答案 1 :(得分:6)

问题是下一个:

生成此邮件您使用此命令

$rails generate mailer UserMailer account_activation password_reset

发回

create  app/mailers/user_mailer.rb
create  app/mailers/application_mailer.rb
invoke  erb
create    app/views/user_mailer
create    app/views/layouts/mailer.text.erb
create    app/views/layouts/mailer.html.erb
invoke  test_unit
create    test/mailers/user_mailer_test.rb
create    test/mailers/previews/user_mailer_preview.rb

以奇怪的方式生成app/views/layouts/mailer.html.erb文件,因此当您致电

  

布局&#39;邮件&#39;

rails core发送此错误

  

&#34;缺少模板布局/邮件&#34;

您可以通过两种方式解决此问题。

首先:注释掉或删除布局&#39;邮件&#39;。
第二:创建文件。

另一种方式,如布局邮件&#39;是不好的做法导致这种语法对Rails没有意义。

如果您创建文件,请使用此代码填写

<!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>

答案 2 :(得分:6)

我遇到了同样的问题,解决了这个问题,确保我在public class Window { public static void main(String[] args) { BoxGame02 frame = new BoxGame02(); frame.setSize(400, 400); frame.setLocationRelativeTo(null); frame.setResizable(false); frame.setVisible(true); } } 中有两个文件:.../app/views/layouts/mailer.html.erb

mailer.text.erb

mailer.html.erb

<!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>

mailer.text.erb

答案 3 :(得分:2)

如果您还没有,则需要名为user_mailer的视图中的文件夹,并且您需要为每个方法(account_activation.html.erb&amp; password_reset.html.erb)提供一个文件。这是您的电子邮件模板的位置。

答案 4 :(得分:0)

确保您拥有app/mailers/application_mailer.rb文件 来自Hartl的教程:

class ApplicationMailer < ActionMailer::Base
 default from: "noreply@example.com"
 layout 'mailer'
end

答案 5 :(得分:0)

您的UserMailer类仍然继承自ApplicationMailer,后者将基本布局目录定义为layout 'mailer'。为了使当前的代码和文件夹结构正常工作,您可以进行以下更改。

从此

UserMailer < ApplicationMailer

对此

UserMailer < ActionMailer::Base