Esta es mi primera publicación aquí, así que espero que publique esta pregunta en el lugar correcto. De lo contrario, hágamelo saber para saber la próxima vez que publique aquí :)Ruby on Rails -HTTP error handling
Estoy trabajando en un sitio web RoR y me gustaría manejar los errores del servidor (400, 404, 500, etc.) individualmente. Además, dado que el sitio web es dinámico, me gustaría manejar los errores dentro del entorno de los rieles en lugar de a nivel del servidor. Un ejemplo de lo que me gustaría hacer podría ser presentar al usuario material opcional o una barra de búsqueda cuando se topa con una página o plantilla que no se carga o simplemente no existe.
Soy nuevo en RoR así que, por favor, desnudo conmigo en caso de que pregunte lo obvio.
Por lo tanto, leí un poco y creo que usar el manejador de excepciones rescue_from es el camino a seguir en mi caso. (Estaría más que feliz de saber si alguno de ustedes tiene una opinión diferente).
Tengo un simple prototipo de trabajo (véase el código de abajo) en funcionamiento, sin embargo, me sale un error cuando se incluyo el siguiente gestor de excepciones al código:
rescue_from ActionController::MissingTemplate, :with => :not_found #404
Ahora, no puedo ver que tengo un error de ortografía y he visto esta línea en el código publicado en la web. Sin embargo, cuando lo incluyo me sale el siguiente error de enrutamiento:
Routing Error No route matches "/errorhandle" with {:method=>:get}
estoy trabajando en los carriles 2.3.5, tal vez eso tiene algo que ver con eso?
Espero que pueda ayudarme a arrojar algo de luz sobre este tema.
¡Salud! /Maja
class ApplicationController < ActionController::Base
helper :all # include all helpers, all the time
protect_from_forgery #See ActionController::RequestForgeryProtection for details
#ActiveRecord exceptions
rescue_from ActiveRecord::RecordNotFound, :with => :not_found #400
#ActiveResource exceptions
rescue_from ActiveResource::ResourceNotFound, :with => :not_found #404
#ActionView exceptions
rescue_from ActionView::TemplateError, :with => :not_found #500
#ActionController exceptions
rescue_from ActionController::RoutingError, :with => :not_found #404
rescue_from ActionController::UnknownController, :with => :not_found #404
rescue_from ActionController::MethodNotAllowed, :with => :not_found #405
rescue_from ActionController::InvalidAuthenticityToken, :with => :not_found #405
rescue_from ActionController::UnknownAction, :with => :not_found #501
# This particular exception causes all the rest to fail.... why?
# rescue_from ActionController::MissingTemplate, :with => :not_found #404
protected
def not_found
render :text => "Error", :status => 404
end
# Scrub sensitive parameters from your log
# filter_parameter_logging :password
end
¿Puede mostrarnos las rutas relevantes de routes.rb, si las hay? – Trevoke
Sure Trevoke, gracias por la respuesta rápida. No he agregado nada a routes.rb así que supongo que esto es más o menos el estándar. file: ActionController :: Routing :: Routes.draw do | map | map.resources: errorhandlers # ... # un montón de líneas comentadas # ... map.connect ': Controlador /: action /: id' map.connect ': controller /: action/: id.: formato ' final –
uh, no estoy seguro de cómo hacer que el comentario se vea bien y ordenado * uark *. Espero que sea legible de todos modos ... –