hel*_*rld 8 ruby ruby-on-rails ruby-on-rails-3 web ruby-on-rails-5
我正在关注michael harlt rails教程,但是我收到了这个错误
缺少模板布局/邮件使用{:locale => [:en],:formats => [:html],:variants => [],:handlers => [:raw,:erb,:html,:builder,:红宝石,:咖啡,: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
Run Code Online (Sandbox Code Playgroud)
并且错误突出显示的行
mail to: user.email, subject: "Account activation"
Run Code Online (Sandbox Code Playgroud)
我尝试在user_mailer.rb中添加layout'mailer',但它不起作用.
编辑: 这是错误的屏幕截图
小智 8
我有同样的问题,如果我在application_mailer中注释掉布局'邮件'行,它似乎对我有用
例如
class ApplicationMailer < ActionMailer::Base
default from: 'noreply@taskflow.herokuapp.com'
# layout 'mailer'
end
Run Code Online (Sandbox Code Playgroud)
问题是下一个:
要生成此邮件程序,请使用此命令
$rails generate mailer UserMailer account_activation password_reset
Run Code Online (Sandbox Code Playgroud)
送回去
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
Run Code Online (Sandbox Code Playgroud)
通过一种奇怪的方式app/views/layouts/mailer.html.erb,当你打电话时,不会生成文件
布局'邮件'
rails core发送给你错误
"缺少模板布局/邮件"
你可以通过两种方式解决这个问题.
第一:注释掉或删除布局'邮件'.
第二:创建文件.
像'布局邮件程序'这样的另一种方法是不好的做法导致这种语法对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>
Run Code Online (Sandbox Code Playgroud)
我有同样的问题,解决它的问题是确保我有两个文件.../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>
Run Code Online (Sandbox Code Playgroud)
mailer.text.erb:
<%= yield %>
Run Code Online (Sandbox Code Playgroud)
小智 2
如果您还没有,您将需要在视图中创建一个名为 user_mailer 的文件夹,并且在其中您将需要每个方法的文件(account_activation.html.erb 和 password_reset.html.erb)。这是您的电子邮件模板所在的位置。