2012-04-21 16 views
1

Devise 2は本当に素晴らしいです!しかし、ログイン後にsuperhardを使ってusers /:idにリダイレクトしようとしています。ユーザーにリダイレクトする方法:/ id成功したログイン後にログインする - レール3

デフォルトのページは、ユーザーがサイトにログインするとrootになります。しかし、users_controller.rbによって制御されるusers /:idページに移動します。サインインした後、手動でlocalhost:3000/users/1と入力してユーザープロフィールページに移動し、そこでユーザー情報にアクセスすることができますので、show controllerは正常に動作しています。

重要な問題は、私はサイトがローカルホストに行くために得る方法である:3000 /ユーザー/ 1ユーザー後1つのサインで

は私が工夫ウィキ何回も読んで多くのことをGoogleで検索しました。最も簡単な方法は、application_controller.rbに追加することによって、工夫を上書きすることです:

def after_sign_in_path_for(resource) 
    dashboard_path 
end 

私は私の質問はdashboard_pathを定義する方法であると思いますか? config/routes.rbとapplication_controller.rbに何を追加しますか?

ご協力いただきありがとうございます。私は2.0と3.2.3

答えて

3

まず、私は私が
routes.rbを

devise_for :users,:has_many => :comments, :controllers => {:sessions => devise/sessions', :registrations => 'devise/registrations'} do  

     match '/users/:id/dashboard', :to => "users#dashboard", :as => :dashboard  

を何次に、あなたのヘルパーに以下のヘルパーを宣言するを教えてくれthisリンク

を参照してくださいレールを考案使用しています。あなたがdeviseキーワードを使用すると、rbファイル
ユーザーヘルパー

def resource_name  
    :user  
end  

def resource  
    @resource ||= User.new  
    end  

    def devise_mapping  
    @devise_mapping ||= Devise.mappings[:user]  
    end  

end    

Application_controller.rb

def after_sign_in_path_for(resource)  
    if current_user.admin?  
     stored_location_for(resource) || admin_path  
    else  
     stored_location_for(resource) || dashboard_path(current_user.id)  
    end  
    end  

私は、これはあなたを助けるでしょう願っています。
ありがとうございます。

+1

ありがとうございました!興味深いことに、私が 'def after_sign_in_path_for(resource)@ user = current user end'を追加しただけでは、ログイン後にusers /:idにリダイレクトされます。私はroute.rbに他のものを追加する必要はありませんでした – railsnoob123

関連する問題