2

更新: /* Railscasts #282で説明されているようにアセット パイプラインをセットアップすることで問題を解決できました*/

アプリでの認証に Devise を使用しています。gem Rails_admin を追加するまでは問題なく動作していました。私もその過程でRails 3.1に移行したので、おそらく問題は3.1への移行にあります。

サインアウトすると、次のようになります。

「id=sign_out のユーザーが見つかりませんでした」

users_controller の show アクションと params にトレース バックします。{"id"=>"sign_out"}

サインアウト リンクはアプリケーション レイアウトにあります。

<%= link_to 'User Sign Out', destroy_user_session_path, :method => :delete %>

対応するルート:

destroy_user_session DELETE /users/sign_out(.:format)  {:action=>"destroy", :controller=>"devise/sessions"}

この問題は次のように思われます:アプリで Devise を使用してサインアウトする際に問題が発生しましたが、削除方法を指定しています。

続きます。. Deviseでこのメソッドを見つけました:

  def after_sign_out_path_for(resource_or_scope)
    root_path
  end

さらに掘り下げる方法を誰か教えてくれませんか?つまり、「resource_or_scope」を見つける方法は? root_path はルートで問題ないようです。

ここに私のroutes.rbがあります:

Notebook::Application.routes.draw do

  mount RailsAdmin::Engine => '/admin', :as => 'rails_admin'

  devise_for :owners

  match '/user' => 'users#dashboard', :as => :user_root
  match '/customer' => 'customers#dashboard', :as => :customer_root

  match 'users/dashboard' => 'users#dashboard'

  match 'customers/dashboard' => 'customers#dashboard'


  devise_for :users

  devise_for :customers

  resources :users

  resources :customers, :only => [:index, :show, :edit, :update, :destroy]

  root :to => 'misc#landing'
end
4

0 に答える 0