rails example ruby-on-rails ajax ruby-on-rails-3 rescue

ruby on rails - example - Rescue_from para solicitudes javascript



rails ujs (1)

En mi aplicación Rails 2.3.8 tuve un código de rescate de excepciones, que se lanzan durante las acciones de javascript:

rescue_from ::Exception, :with => :show_js_errors ... def show_js_errors exception if request.format == :js flash[:error] = ''some error occured'' render :update do |page| page.redirect_to({:controller => ''/home'', :action => :index}) end else # use default error handling for non-JS requests rescue_action_without_handler(exception) end end

Así que mis usuarios reciben un mensaje de error, si una llamada ajax se ejecuta en un error. En Rails 3, no puedo simplemente llamar al manejo de errores predeterminado, porque el método "without_handler" ya no existe.

actualizar doh

Publiqué esto después de 3 horas de búsqueda, pero solo 30 minutos después de la publicación encontré una solución yo mismo.

Solo vuelve a subir la excepción.

Ya que está en el manejo de errores, no se realiza ningún manejo adicional con esta excepción.


Solo vuelve a subir la excepción.

def show_js_errors exception if request.format == :js flash[:error] = ''some error occured'' render :update do |page| page.redirect_to({:controller => ''/home'', :action => :index}) end else raise # << end end

http://simonecarletti.com/blog/2009/11/re-raise-a-ruby-exception-in-a-rails-rescue_from-statement/ concurs:

rescue_from ActiveRecord::StatementInvalid do |exception| if exception.message =~ /invalid byte sequence for encoding/ rescue_invalid_encoding(exception) else raise end end

[...] La excepción se ha vuelto a generar correctamente, pero no está atrapada [sic] por el mecanismo estándar de rescate de Rails y la página de excepción estándar no está representada.