更新: /* 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