2013-03-01 61 views
0

我正在使用Devise進行用戶身份驗證,並希望讓用戶重定向到我爲用戶類名爲「myaccount」設置的自定義動作。但是,我無法獲得正確的語法 - 我嘗試的所有內容都會出現各種錯誤。設計重定向到登錄時的自定義動作

此代碼可能會告訴你什麼是我想要acheive(它不工作雖然):

def after_sign_in_path_for(resource) 
    redirect_to :controller => 'users', :action => 'myaccount', :id => current_user.id and return 
    end 

而且路線:

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

    devise_for :users 

    resources :users do 
    member do 
     get 'myaccount' 
    end 
    end 

道歉,它可能是一個相當新手問題 - 但我該如何改變我的重定向,或添加一個新的路由,例如user_sign_in_path會起作用嗎?

謝謝!

UPDATE:

如果任何人發現這個問題,這是對我工作:

url_for :controller => '/users', :id => current_user.id, :action => 'myaccount' 

這是正確的順序,我需要它,我不得不把一個斜線盈的控制器名稱,使其使用它而不是Devise控制器。

+0

你可以看一下https://開頭github上。 com/plataformatec/devise/wiki /方法: - 重定向到特定頁面 - 成功登錄以獲得更詳細的補充。我希望它有幫助 – Aleks 2013-03-01 11:54:41

+0

我曾經看過,但它並沒有給我以後的語法。對於任何人發現這個問題,這個頁面:http://apidock.com/rails/ActionController/Base/url_for給了我一些細節,我需要做什麼 - 即把斜槓放在控制器名稱之前。 – ecs 2013-03-01 12:11:10

回答

0

你不必調用redirect_to

def after_sign_in_path_for(resource) 
    { controller: 'users', action: 'myaccount', id: current_user.id } 
end 

如果還是不行,那包裹起來url_for這應該工作:)

+0

嘗試了兩種方法,並獲得了與之相同的結果。我已經添加了一個更新的問題 - 它是如何來試圖使用設計控制器,而不是我指定的?謝謝。 – ecs 2013-03-01 12:07:38

+0

沒關係,得到它 - 需要在控制器名稱前加一個斜槓。謝謝你的幫助! – ecs 2013-03-01 12:08:49

+0

你實際上可以使用'myaccount_user_path(current_user)' – jvnill 2013-03-01 12:16:54