使用{:locale => ,:formats => 缺少模板布局/邮件程序,

我正在关注michael harlt rails教程,但是我收到了这个错误

缺少模板布局/邮件使用{:locale => [:en],:formats => [:html],:variants => [],:handlers => [:raw,:erb,:html,:builder,:ruby,:咖啡,: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’,但它不起作用。

编辑: 这是错误的屏幕截图

我文件夹的截图

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

我有同样的问题,如果我在application_mailer中注释掉布局’邮件’行,它似乎对我有用

例如

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

问题是下一个:

要生成此邮件程序,请使用此命令

 $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文件

布局’邮件’

rails core发送给你错误

“缺少模板布局/邮件”

你可以通过2种方式解决这个问题。

第一:注释掉或删除布局’邮件’。
第二:创建文件。

像’布局邮件程序’这样的另一种方法是不好的做法导致这种语法对Rails没有意义。

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

        <%= yield %>   

我有同样的问题,解决了这个问题,确保我在.../app/views/layouts/ mailer.html.erbmailer.text.erb有两个文件。

mailer.html.erb

        <%= yield %>   

mailer.text.erb

 <%= yield %> 

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

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