【问题标题】:Display custom Devise Forgot your password form anywhere在任何地方显示自定义设计忘记密码表格
【发布时间】:2014-03-02 19:27:04
【问题描述】:

我想在任何地方显示一个自定义的“忘记密码”表单,我认为它类似于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' 错误。我做错了什么?

【问题讨论】:

    标签: ruby-on-rails ruby authentication ruby-on-rails-4 devise


    【解决方案1】:

    原来我需要

    helper_method :resource, :resource_name, :devise_mapping
    

    就在 desktop_controller.rb 中的方法之后

    【讨论】:

      【解决方案2】:

      最好在应用程序助手中定义这些方法

      module ApplicationHelper
      
      def resource_name
         :user
        end
      
        def resource
         @resource ||= User.new
        end
      
       def devise_mapping
       @devise_mapping ||= Devise.mappings[:user]
       end
       end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-20
        • 2017-02-18
        • 2012-01-07
        • 1970-01-01
        • 2015-12-21
        • 1970-01-01
        相关资源
        最近更新 更多