tutorial signup sign_in rails method instalar example ejemplos ruby-on-rails ruby-on-rails-3 devise

ruby on rails - signup - Rails 3 con Devise: ninguna ruta coincide/d/users/sign_out



devise wiki (3)

Recibo el siguiente error cuando intento cerrar la sesión de error de diseño:

Ninguna ruta coincide con [GET] "/ d / users / sign_out"

Mi etiqueta es correcta, es la siguiente:

<%= link_to "Sign Out", destroy_session_path, :method=>:delete %>

Mi ruta para diseñar es:

devise_for :users, :path_prefix=>"d", :controllers=>{:sessions=>"sessions"}

Otras rutas son:

resources :users#For CRUD defined after devise_for like in Devise Wiki

Con un controlador personalizado, sesiones para el inicio de sesión de ajax como en la página wiki de Devise:

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

El iniciador del diseño tiene:

config.sign_out_via = :delete

¿Alguna idea sobre qué podría estar causando el problema? He buscado en Google y todavía estoy perplejo.

Actualizar:

Aquí hay una captura de pantalla del archivo de rutas de rieles para los usuarios del dispositivo. Lo siento, es pequeño, pero puedes hacer clic derecho y luego verlo solo para una pantalla más grande.

Actualización # 2:

El archivo jquery_ujs está incluido.

Actualización # 3:

Parece que en la consola se está borrando, pero está pasando del session_controller a / luego a d / users / sign_out ... No estoy seguro de cómo solucionarlo.

Actualización # 4:

Cuando se redirige, va primero a d / users / sign_out como DELETE, como debería. A continuación, redirecciona a root_url que a continuación root_url el error ERROR Errno::ECONNABORTED: An established connection was aborted by the software in your host machine. A continuación, intenta redirigir a d / users / sign_out como GET donde está fallando.


Parece que podría haber eliminado //= require jquery_ujs de su archivo application.js. Creo que maneja los detalles del enlace para hacer una solicitud de "eliminación". De cualquier manera, como está ahora, estás haciendo un ''GET'' que obviamente no afectará tu método destroy_user_session .


Esto parece ser un problema entre Devise y Ruby 1.9.2-p290. Actualizando a Ruby 1.9.3 y ejecutando la bundle update para asegurar que se usó la última versión de Devise; parece funcionar