2010-08-29 100 views
22

我正在使用Rails 2.3並設計來處理用戶註冊/身份驗證。如何在使用Devise時註冊後重定向用戶?

我需要在用戶註冊帳戶後立即將用戶重定向到外部第三方網站。一直在線尋找代碼&,但無法看到如何做到這一點。

如何更改設計流程以重定向用戶?

回答

28

添加到您的應用控制器

# 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 

這裏被設計助手的列表,你可以使用http://rdoc.info/github/plataformatec/devise/master/Devise/Controllers/Helpers

我希望幫助=)

+1

這 – Sucrenoir 2012-04-04 12:23:34

+0

你推翻了'在* _path_for' after_sign_ *,但對於OP的問題,傑森需要覆蓋'after_sign_ * *高達_path_for',作爲佈雷特指出,不與軌道3.2和最後一個色器件工作下面。 – 2014-10-07 21:40:11

+0

已更新的答案。 – 2014-11-19 04:40:40

52

列爲「答案正確「答案特指sign_in後...如果你想在sign_up後重定向一個用戶,你需要覆蓋以下內容:

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

全部細節可在the wiki上找到。

+0

after_sign_up_path_for的代碼似乎是after_sign_in_path_for的包裝。所以,如果你希望兩者行爲相同,那麼我認爲覆蓋after_sign_in_path_for將覆蓋兩者。 – pduey 2011-08-30 19:26:38

+1

如果您沒有確認,after_sing_in_path將起作用,確認後重定向到根路徑。我有用戶確認,那麼在註冊之後我應該如何實現重定向,在我爲自己完成的登錄功能之後,但我沒有得到註冊的方法。 – 2012-01-10 11:52:12

+3

此外,這必須在您自己的RegistrationsController中完成,而不是在ApplicationController中完成。 – declan 2012-04-23 19:44:45

18

如果您正在使用Devise的確認(表示用戶在註冊後沒有立即激活),則需要覆蓋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 

確保告訴設計使用您的RegistrationsController。

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

添加這個def after_sign_up_path_for(資源)而不是「非活動」 – ChrisBedoya 2012-05-17 22:04:49

相關問題