Ruby on rails 缺少rails mailer开发环境的模板

Ruby on rails 缺少rails mailer开发环境的模板,ruby-on-rails,actionmailer,Ruby On Rails,Actionmailer,我正在学习Ryan Bates关于密码重置的教程,但在完成它时遇到了困难 当我尝试运行密码重置时,出现错误-- 缺少模板用户\u mailer/密码\u用“mailer”重置。在以下位置搜索:“\u用户邮箱” *我不知道为什么会这样说,我在app/views/user\u mailer/password\u reset.text.erb下有一个password\u reset.text.erb文件* 这是 密码\u重置控制器 class PasswordResetsController <

我正在学习Ryan Bates关于密码重置的教程,但在完成它时遇到了困难

当我尝试运行密码重置时,出现错误--

缺少模板用户\u mailer/密码\u用“mailer”重置。在以下位置搜索:“\u用户邮箱”

*我不知道为什么会这样说,我在app/views/user\u mailer/password\u reset.text.erb下有一个password\u reset.text.erb文件*

这是

密码\u重置控制器

class PasswordResetsController < ApplicationController
  def new
  end

  def create
    user = User.find_by_email(params[:email])
    user.send_password_reset if user
    redirect_to root_url, :notice => "Email sent with password reset instructions"
  end
end
类密码重置控制器“发送带有密码重置说明的电子邮件”
结束
结束
密码重置#new.html.erb

<% provide(:title, "Reset Password") %>

<%= form_tag password_resets_path, :method => :post do %>
  <div class="field">
    <%= label_tag :email %>
    <%= text_field_tag :email, params[:email] %>
  </div>
  <div class="actions"><%= submit_tag "Reset Password", :class => "button" %></div>
<% end %>
class UserMailer < ActionMailer::Base
  default from: "from@example.com"

  # Subject can be set in your I18n file at config/locales/en.yml
  # with the following lookup:
  #
  #   en.user_mailer.password_rest.subject
  #
def password_reset(user)
  @user = user
  mail :to => user.email, :subject => "Password Reset"
end

end
Click the link below to reset your password.

<%= edit_password_reset_url(@user.password_reset_token) %>

If you did not request to change your password, ignore this email and your password will stay the same.

:post do%>
“按钮”%>
用户模型

class User < ActiveRecord::Base
  before_save { self.email = email.downcase }
  before_create :create_remember_token

  validates :name, presence: true, length: { maximum: 50 }
  VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
  validates :email, presence: true, 
            format: { with: VALID_EMAIL_REGEX },
            uniqueness: { case_sensitive: false }
  has_secure_password
  validates :password, length: { minimum: 6 }, on: :create
  #ask at one point, wherther I can continue to validate password and password_confirmation, on update, but allow password_reset to work
  has_one :common_app, dependent: :destroy


  has_one :video, dependent: :destroy

  def User.new_remember_token
    SecureRandom.urlsafe_base64
  end

  def User.encrypt(token)
    Digest::SHA1.hexdigest(token.to_s)
  end

  def send_password_reset
    generate_token(:password_reset_token)
    self.password_reset_sent_at = Time.zone.now
    save!
    UserMailer.password_reset(self).deliver
  end

  def generate_token(column) # this is similar to create_remember_token, but instead it's generalized, so it can work on any column
    begin
      self[column] = SecureRandom.urlsafe_base64
    end while User.exists?(column => self[column])
  end


  private

    def create_remember_token
      self.remember_token = User.encrypt(User.new_remember_token)
    end

end
class用户self[column])
结束
私有的
def创建\u记住\u标记
self.memored\u token=User.encrypt(User.new\u memored\u token)
结束
结束
User\u mailer.rb

<% provide(:title, "Reset Password") %>

<%= form_tag password_resets_path, :method => :post do %>
  <div class="field">
    <%= label_tag :email %>
    <%= text_field_tag :email, params[:email] %>
  </div>
  <div class="actions"><%= submit_tag "Reset Password", :class => "button" %></div>
<% end %>
class UserMailer < ActionMailer::Base
  default from: "from@example.com"

  # Subject can be set in your I18n file at config/locales/en.yml
  # with the following lookup:
  #
  #   en.user_mailer.password_rest.subject
  #
def password_reset(user)
  @user = user
  mail :to => user.email, :subject => "Password Reset"
end

end
Click the link below to reset your password.

<%= edit_password_reset_url(@user.password_reset_token) %>

If you did not request to change your password, ignore this email and your password will stay the same.
class UserMaileruser.email,:subject=>“密码重置”
结束
结束
App/views/user\u mailer/password\u reset.text.erb

<% provide(:title, "Reset Password") %>

<%= form_tag password_resets_path, :method => :post do %>
  <div class="field">
    <%= label_tag :email %>
    <%= text_field_tag :email, params[:email] %>
  </div>
  <div class="actions"><%= submit_tag "Reset Password", :class => "button" %></div>
<% end %>
class UserMailer < ActionMailer::Base
  default from: "from@example.com"

  # Subject can be set in your I18n file at config/locales/en.yml
  # with the following lookup:
  #
  #   en.user_mailer.password_rest.subject
  #
def password_reset(user)
  @user = user
  mail :to => user.email, :subject => "Password Reset"
end

end
Click the link below to reset your password.

<%= edit_password_reset_url(@user.password_reset_token) %>

If you did not request to change your password, ignore this email and your password will stay the same.
单击下面的链接重置密码。
如果您没有请求更改密码,请忽略此电子邮件,您的密码将保持不变。

感谢所有帮助:)

password\u reset.text.erb将其名称更改为password\u reset.html.erb

Huh,在删除.html和.erb后,它使事情正常运行:S.不确定为什么更新:嗯,奇怪,现在.html.erb和.text.erb都正常工作了:S.html意味着一个文件有各自的html代码,.erb是嵌入其中的ruby代码。如果有.text,则表示这是一个文本文件。