我正在关注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',但它不起作用。
答案 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