2014-03-02 9 views
0

我想顯示自定義設計「忘記密碼」的形式在任何地方,我想這將是類似https://github.com/plataformatec/devise/wiki/How-To:-Display-a-custom-sign_in-form-anywhere-in-your-app顯示自定義設計忘記密碼形式的任何地方

所以在config/routes.rb我說:

get "/forgot_password" => "desktop#new" 

app/views/desktop/new.html.haml

 =form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :post }) do |f| 
     .error-messages 
      =devise_error_messages! 
     =f.email_field :email, :autofocus => true, :required => true, :class => 'field' 
     %br 
     %br 
     %button.signin-button Send Instructions 

app/controllers/desktop_controller.rb

class DesktopController < ApplicationController 
    def resource_name 
    :user 
    end 

    def resource 
    @resource ||= User.new 
    end 

    def devise_mapping 
    @devise_mapping ||= Devise.mappings[:user] 
    end 

    def new 
    end 
end 

當我導航到/ forgot_password時,出現undefined local variable or method 'resource'錯誤。我究竟做錯了什麼?

回答

1

原來我需要

helper_method :resource, :resource_name, :devise_mapping 

權desktop_controller.rb方法後

0

更好地定義應用程序中的輔助方法

module ApplicationHelper 

def resource_name 
    :user 
    end 

    def resource 
    @resource ||= User.new 
    end 

def devise_mapping 
@devise_mapping ||= Devise.mappings[:user] 
end 
end