2010-08-29 34 views
22

Tôi đang sử dụng Rails 2.3 và Devise để xử lý đăng ký/xác thực người dùng.Cách chuyển hướng người dùng sau khi đăng ký khi sử dụng Devise?

Tôi cần chuyển hướng người dùng đến trang web bên thứ ba bên ngoài ngay sau khi người dùng đăng ký tài khoản. Đã tìm kiếm mã số & trực tuyến nhưng không thể xem cách thực hiện việc này.

Làm cách nào để thay đổi luồng sáng tạo để chuyển hướng người dùng?

Trả lời

28

Thêm vào bộ điều khiển ứng dụng bạn

# Devise: Where to redirect users once they have logged in 
    def after_sign_up_path_for(resource) 
    "http://www.google.com" # <- Path you want to redirect the user to. 
    end 

Dưới đây là danh sách các người giúp đỡ lập mưu bạn có thể sử dụng http://rdoc.info/github/plataformatec/devise/master/Devise/Controllers/Helpers

Tôi hy vọng rằng sẽ giúp =)

+1

Điều đó không làm việc với đường ray 3.2 và devise cuối cùng – Sucrenoir

+0

Bạn overrode 'cái after_sign_ * trong * _path_for', nhưng đối với vấn đề OP của Jason cần phải ghi đè' after_sign_ * lên * _path_for', như Brett chỉ ra phía dưới. –

+0

Đã cập nhật câu trả lời. –

52

Câu trả lời được liệt kê là "đúng "câu trả lời cụ thể đề cập đến sau khi sign_in ... Nếu bạn muốn chuyển hướng người dùng sau khi sign_up bạn cần phải ghi đè sau đây:

def after_sign_up_path_for(resource) 
    "http://www.google.com" # <- Path you want to redirect the user to after signup 
end 

Chi tiết đầy đủ có thể được tìm thấy trên the wiki.

+0

Mã cho after_sign_up_path_for có vẻ là trình bao bọc cho after_sign_in_path_for. Vì vậy, nếu bạn muốn cả hai để hành xử như nhau, sau đó tôi nghĩ rằng trọng nữa after_sign_in_path_for sẽ bao gồm cả hai. – pduey

+1

after_sing_in_path hoạt động nếu bạn không có xác nhận, Sau khi xác nhận nó chuyển hướng đến đường dẫn gốc. Tôi có xác nhận người dùng vì vậy làm thế nào tôi nên đạt được chuyển hướng sau khi đăng ký, sau khi đăng nhập chức năng tôi đã làm cho bản thân mình nhưng tôi không nhận được làm thế nào để làm cho đăng ký. –

+3

Ngoài ra, điều này phải được thực hiện trong RegistrationsController của riêng bạn, không phải trong ApplicationController. – declan

18

Nếu bạn đang sử dụng xác nhận của Devise (nghĩa là người dùng không được kích hoạt ngay sau khi họ đăng ký), bạn cần ghi đè phương thức after_inactive_sign_up_path_for.

# controllers/registrations_controller.rb 
class RegistrationsController < Devise::RegistrationsController 
    def after_inactive_sign_up_path_for(resource) 
    "http://somewhere.com" 
    end 
end 

Hãy chắc chắn để nói ra để sử dụng RegistrationsController của bạn.

# config/routes.rb 
devise_for :users, :controllers => {:registrations => 'registrations'} 
+0

thêm def after_sign_up_path_for (tài nguyên) này thay vì "không hoạt động" – ChrisBedoya

Các vấn đề liên quan