1

Devise 2は本当に素晴らしいです!ただし、サインイン後に users/:id にリダイレクトするように一生懸命努力しています。

ユーザーがサイトに正常にサインインした後の既定のページはルートです。ただし、users_controller.rb によって制御される users/:id ページに移動する必要があります。サインイン後、localhost:3000/users/1 を手動で入力して、ユーザー情報にアクセスできるユーザー プロファイル ページに移動できるため、ショー コントローラーは正常に動作しています。

重要な問題は、ユーザー 1 がサインインした後、サイトを localhost:3000/users/1 に移動する方法です。

devise の wiki を何度も読んだり、ググったりしました。最も簡単な方法は、application_controller.rb を追加してデバイスをオーバーライドすることです。

def after_sign_in_path_for(resource)
  dashboard_path
end

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

どんな助けでも大歓迎です!私はdevise 2.0とrails 3.2.3を使用しています

4

1 に答える 1

4

まずはこちらのリンク をご覧ください

何をしているか教えてください
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      

次に、devise キーワードUsersHelperを使用するときに、helper.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       

これがお役に立てば幸いです。
ありがとう。

于 2012-04-21T07:13:08.947 に答える