デバイスエラーからサインアウトしようとすると、次のエラーが発生します。
[GET] "/d/users/sign_out" に一致するルートはありません
私のタグは正しいです、それは次のとおりです:
<%= link_to "Sign Out", destroy_session_path, :method=>:delete %>
デバイスの私のルートは次のとおりです。
devise_for :users, :path_prefix=>"d", :controllers=>{:sessions=>"sessions"}
他のルートは次のとおりです。
resources :users#For CRUD defined after devise_for like in Devise Wiki
Devise wiki ページのような ajax ログイン用のカスタム コントローラー セッション:
class SessionsController < Devise::SessionsController
def create
respond_to do |format|
format.html{ super }
format.json do
resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#failure")
#resource = warden.authenticate!(:scope => resource_name, :recall => :failure)
return sign_in_and_redirect(resource_name, resource)
end
end
end
def sign_in_and_redirect(resource_or_scope, resource=nil)
scope = Devise::Mapping.find_scope!(resource_or_scope)
resource ||= resource_or_scope
sign_in(scope, resource) unless warden.user(scope) == resource
return render :json => {:success => true, :redirect => stored_location_for(scope) || after_sign_in_path_for(resource)}
end
def failure
return render:json => {:success => false, :errors => ["Login failed."]}
end
end
デバイス初期化子には次のものがあります。
config.sign_out_via = :delete
問題の原因について何か考えはありますか? Google で検索しましたが、まだ困惑しています。
アップデート:
これは、devise ユーザー向けの rails routes ファイルのスクリーンショットです。小さくて申し訳ありませんが、右クリックして単独で大きな画面で表示できます。
更新 #2:
jquery_ujs ファイルが含まれています。
更新 #3:
削除が実際に渡されていることがコンソールに表示されますが、sessions_controller から / にジャンプし、次に d/users/sign_out にジャンプしています...これを修正する方法がわかりません。
更新 #4:
リダイレクトすると、最初に d/users/sign_out に DELETE として移動します。次に、リダイレクト先にリダイレクトしroot_url
、エラーが発生しますERROR Errno::ECONNABORTED: An established connection was aborted by the software in your host machine.
。次に、失敗している GET として d/users/sign_out にリダイレクトしようとします。