缺少模板 layouts/mailer 与 {:locale=>[:en], :formats=>[:html],
Missing template layouts/mailer with {:locale=>[:en], :formats=>[:html],
我正在学习 michael harlt rails 教程,但我收到此错误
Missing template layouts/mailer with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :coffee, :jbuilder]}. Searched in: * "/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 中添加布局 'mailer' 但它不起作用。
确保您有文件 app/mailers/application_mailer.rb
来自 Hartl 的教程:
class ApplicationMailer < ActionMailer::Base
default from: "noreply@example.com"
layout 'mailer'
end
如果您还没有,您将需要在名为 user_mailer 的视图中创建一个文件夹,并且在该文件夹中您需要为每个方法创建一个文件(account_activation.html.erb & password_reset.html.erb ).这是您的电子邮件模板所在的位置。
我遇到了同样的问题,如果我在 application_mailer
中注释掉布局 '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
文件没有生成所以当你调用
layout 'mailer'
rails 内核向您发送此错误
"Missing template layouts/mailer"
您可以通过两种方式解决此问题。
首先:注释掉或删除布局'mailer'。
第二步:创建文件。
另一种方式如 'layout mailer' 是不好的做法,因为这种语法对 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>
我遇到了同样的问题,解决它的方法是确保我在 .../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
:
<%= yield %>
您的 UserMailer
class 仍在继承 ApplicationMailer
,后者将基本布局目录定义为 layout 'mailer'
。为了让您当前的代码和文件夹结构正常工作,您可以进行以下更改。
由此
UserMailer < ApplicationMailer
对此
UserMailer < ActionMailer::Base
我正在学习 michael harlt rails 教程,但我收到此错误
Missing template layouts/mailer with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :coffee, :jbuilder]}. Searched in: * "/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 中添加布局 'mailer' 但它不起作用。
确保您有文件 app/mailers/application_mailer.rb
来自 Hartl 的教程:
class ApplicationMailer < ActionMailer::Base
default from: "noreply@example.com"
layout 'mailer'
end
如果您还没有,您将需要在名为 user_mailer 的视图中创建一个文件夹,并且在该文件夹中您需要为每个方法创建一个文件(account_activation.html.erb & password_reset.html.erb ).这是您的电子邮件模板所在的位置。
我遇到了同样的问题,如果我在 application_mailer
中注释掉布局 '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
文件没有生成所以当你调用
layout 'mailer'
rails 内核向您发送此错误
"Missing template layouts/mailer"
您可以通过两种方式解决此问题。
首先:注释掉或删除布局'mailer'。
第二步:创建文件。
另一种方式如 'layout mailer' 是不好的做法,因为这种语法对 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>
我遇到了同样的问题,解决它的方法是确保我在 .../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
:
<%= yield %>
您的 UserMailer
class 仍在继承 ApplicationMailer
,后者将基本布局目录定义为 layout 'mailer'
。为了让您当前的代码和文件夹结构正常工作,您可以进行以下更改。
由此
UserMailer < ApplicationMailer
对此
UserMailer < ActionMailer::Base