2012-11-08 78 views
1

我正在努力獲取設計,在登錄後重定向到用戶的個人資料頁面。我的路線文件看起來像這樣:在使用用戶名登錄後設計重定向

get "profiles/index" 

get "users/index" 

get "users/show" 

authenticated :user do 
root :to => 'home#index' 
end 
root :to => "home#index" 
devise_for :users 
resources :users 
scope ":username", :as => "user" do 
match '/', :to => 'profiles#index' 
end 

我希望它重定向到/ myusername這個用戶的個人資料頁面。謝謝你們的幫助。

+0

我知道你已經接受了答案,但我只想指出2件事。首先,你的路線不應該如此。根應該總是在文件的末尾。第二,也是最重要的,你應該總是搜索寶石的文檔,因爲它通常解釋了你可能遇到的很多問題。以下是關於devise的wiki頁面列表:https://github.com/plataformatec/devise/wiki/_pages。這裏是解決你的具體問題的頁面:https://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-on-successful-sign-in-or-登出。 – Ashitaka

回答

2

如果你想添加一個新SessionsController因爲如此改變重定向符號您可以覆蓋after_sign_in_path_for方法:

class SessionsController < Devise::SessionsController 

    #after_sign_in_path_for is called by devise 
    def after_sign_in_path_for(user) 
    "https://stackoverflow.com/users/#{user.username}" #adjust the returned path as needed 
    end 

end 

正如Ashikata提到你需要更改色器件的路由,如果你下面」重新改變會話控制器。

devise_for :users, :controllers => { :sessions => 'sessions' } 

另外,並稱修改after_sign_in_path_for方法應用程序控制器應該做的伎倆。

+1

您還應該提到您必須編輯路線文件,以便它使用新創建的控制器。 'devise_for:users,:controllers => {:sessions =>'sessions'}' – Ashitaka