2013-12-23 37 views
0

我正在關注Ryan Bates的密碼重置教程,但在完成時遇到了問題。Missing template rails郵件程序開發環境

當我嘗試運行密碼重置,我得到的錯誤 -

缺少模板user_mailer文件/ password_reset與「郵件」。搜查:* 「user_mailer文件」

*我不知道爲什麼它說,我有一個password_reset.text.erb文件下的應用程序/視圖/ user_mailer文件/ password_reset.text.erb *

這裏的

Password_resets控制器

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 

Password_resets#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 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+\-.][email protected][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 

User_mailer.rb

class UserMailer < ActionMailer::Base 
    default from: "[email protected]" 

    # 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 

應用/視圖/ user_mailer文件/ password_reset.text.erb

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. 

所有幫助表示讚賞:)

回答

2

password_reset.text.erb更名爲password_reset.html.erb

+0

嗨哈斯,似乎並不奏效。 –

+0

呵呵,刪除.html和.erb後,它使事情工作:S。不知道爲什麼 –

+0

更新:呃,很奇怪,現在都是.html.erb和.text.erb工作:S –

相關問題