2012-01-10 27 views
11

Tôi cần ứng dụng Rails của mình để chuyển hướng đến trang chủ sau khi tôi gửi email để gửi cho tôi hướng dẫn đặt lại mật khẩu. Phát triển, theo mặc định sẽ hiển thị biểu mẫu đăng nhập sau khi nhập email.Không thể ghi đè lên Trình điều khiển mật khẩu Devise

Vì vậy, tôi đang cố gắng ghi đè lên Devise::PasswordsController và thay đổi redirect_to, nhưng không thành công. Trong thực tế, tôi không nghĩ Rails thậm chí còn tham gia lớp học của tôi. Nó có thể là một sai lầm rất ngu ngốc nhưng tôi đã ở đó nửa ngày không thành công.

Tôi đã lấy ý tưởng ghi đè bộ điều khiển mật khẩu từ here.

Dưới đây là bộ điều khiển của tôi:

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

routes.rb:

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

tôi muốn đề cập đến mà tôi đã ghi đè lập mưu của Registations và phiên điều khiển trong cùng một ứng dụng, và họ dường như làm việc khỏe.

+0

bạn đang sử dụng phiên bản nào? –

+0

Tôi đang sử dụng thiết lập 1.5.3 – abhijeetmisra

Trả lời

12

Nó nên có thể ghi đè lên bộ điều khiển với các phiên bản mới nhất của lập mưu (2.1.2).

class PasswordsController < Devise::PasswordsController 
    def new 
    super 
    end 

    def create 
    ..override method here.. 
    end 
end 

Và trong config/routes.rb:

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

Bạn có thể kiểm tra với rake routes nếu Rails sử dụng có nguồn gốc PasswordsController thay vì một bản gốc, các tuyến đường nên ví dụ chứa passwords#new thay vì devise/passwords#new.

3

Tôi nghĩ rằng bạn quên đề cập đến các thay đổi trong các tuyến đường:

devise_for :users, :controllers => {:sessions => "sessions", :passwords => "passwords"} 
Các vấn đề liên quan