Creo que Rails 3.1 está cambiando la forma en que se producen los errores. ¿Alguien puede ayudar o confirmar esto? Estoy intentando crear páginas de errores personalizadas con Rails 3.1.0.rc1
unless config.consider_all_requests_local rescue_from Exception, :with => :render_error rescue_from ActiveRecord::RecordNotFound, :with => :render_not_found rescue_from ActionController::RoutingError, :with => :render_not_found rescue_from ActionController::UnknownController, :with => :render_not_found rescue_from ActionController::UnknownAction, :with => :render_not_found end
^^ Esto no funciona.
config.consider_all_requests_local = true
Eso está en mi entorno de desarrollo por defecto. Supongo que Rails 3.1 elimina el “controlador_actividad”, pero no puedo confirmar esto en ninguna parte.
¡Gracias!
¿Asumo que el siguiente código aparece en su ApplicationController?
unless config.consider_all_requests_local rescue_from Exception, :with => :render_error rescue_from ActiveRecord::RecordNotFound, :with => :render_not_found rescue_from ActionController::RoutingError, :with => :render_not_found rescue_from ActionController::UnknownController, :with => :render_not_found rescue_from ActionController::UnknownAction, :with => :render_not_found end
Si es así, intente reemplazar esta línea:
unless config.consider_all_requests_local
con esta línea (pre Rails 3 creo):
unless ActionController::Base.consider_all_requests_local
o esto (post Rails 3):
unless Rails.application.config.consider_all_requests_local
No creo que la solución de Matt detecte errores de enrutamiento en Rails 3.0 / 3.1.
Trate de poner lo siguiente en su application.rb:
# 404 catch all route config.after_initialize do |app| app.routes.append{ match '*a', :to => 'application#render_not_found' } unless config.consider_all_requests_local end
Consulte: https://github.com/rails/rails/issues/671#issuecomment-1780159
Funcionó bien para mí!