2012-01-10 3 views
11

패스워드 재설정 명령을 보내기 위해 이메일을 제출 한 후에 홈 페이지로 리다이렉트하려면 레일즈 앱이 필요합니다. Devise는 기본적으로 전자 메일을 입력 한 후 양식을 표시합니다.Devise 패스워드 컨트롤러를 오버라이드 할 수 없습니다.

그래서 Devise::PasswordsController을 무시하고 redirect_to을 변경하려고했지만 성공하지 못했습니다. 사실 레일스가 내 수업을 듣는 것조차 생각하지 않습니다. 그것은 매우 어리석은 실수 일 수 있습니다. 그러나 저는 반나절 동안 성공하지 못했습니다.

나는 암호 컨트롤러를 here에서 무시하는 아이디어를 가졌습니다.

devise_for :users, :controllers => {:passwords => "passwords"} 
devise_for :users, :controllers => {:registrations => "registrations"} 
devise_for :users, :controllers => {:sessions => "sessions"} 

나는 내가 같은 응용 프로그램에서 고안의 Registations 및 세션 컨트롤러를 오버라이드 (override) 한 것을 언급하고자, 그들이 작동하는 것 :

class PasswordsController < Devise::PasswordsController 
    protected 
    def after_sending_reset_password_instructions_path_for(resource_name) 
    root_url 
    end 
end 

Routes.rb : 여기

내 컨트롤러의 벌금.

+0

어떤 장치 버전을 사용하고 있습니까? –

+0

devise 1.5.3을 사용하고 있습니다. – abhijeetmisra

답변

12

고안의 최신 버전 (2.1.2)와 컨트롤러를 대체 할 수 있어야한다.

class PasswordsController < Devise::PasswordsController 
    def new 
    super 
    end 

    def create 
    ..override method here.. 
    end 
end 

그리고 config/routes.rb

는 : 레일 파생 PasswordsController 대신 원래 하나를 사용하는 경우 당신은 rake routes로 확인하실 수 있습니다

devise_for :users, controllers: { passwords: 'passwords', .. } 

, 경로는 예를 들어 passwords#new 대신 devise/passwords#new 포함해야합니다.

3

난 당신이 루트에 변경 사항을 언급하는 것을 잊었다 생각 :

devise_for :users, :controllers => {:sessions => "sessions", :passwords => "passwords"} 
관련 문제