tutorial rails que ejemplos curso caracteristicas aprender ruby-on-rails ruby-on-rails-3

ruby-on-rails - ejemplos - ruby on rails que es



Rails 3-Personalizando el error y 404 páginas (4)

Estoy construyendo una aplicación Rails 3 en Heroku. En este momento, mis páginas de error y la página 404 son todas las páginas de rieles / heroku estándar.

Me gustaría personalizar estos dos. Tener una página para un error, y tener una página para un 404.

Todos los tutoriales que se encuentran en Google tienen años y no funcionan en Rails 3.

¿Puede por favor sugerir un buen tutorial moderno o consejos sobre cómo hacer lo anterior?

Gracias


Bueno, rails3 aún usa los mismos 404.html, 422.html y 500.html en la carpeta pública. Puedes personalizarlos.

Si estás hablando de captar realmente estas excepciones y hacer algunas cosas dinámicas, creo que la funcionalidad básica es la misma, tienes un poco de around_filter que atrapa tu excepción particular en application_controller es decir, ActiveRecord::RecordNotFound y haz algo con eso.



Actualización 2013 para Rails 3.2 de Jose Valim

Cuando salió Rails 3.0, una de las características que la gente se perdió de repente fue la capacidad de manejar mejor las excepciones. El problema era que, dado que Rails 3 se volvió mucho más "fluido" en Rack, tuvimos que mover algunas características a la pila de middleware y esto nos obligó a mover también toda la gestión de excepciones. Rails 3.2 intenta devolver al juego cierta personalización permitiéndole establecer su propia aplicación de excepciones de rack que se invoca cuando ocurre una falla. Por ejemplo, puede configurar la aplicación de excepciones a su propio enrutador en su config / application.rb:

config.exceptions_app = self.routes

Ahora, cada vez que haya una excepción, su enrutador será invocado. Por lo tanto, para generar páginas 404 personalizadas, simplemente puede agregarlas a su enrutador:

match "/404", :to => "errors#not_found"

¡E implementa la lógica en el controlador como desees! Sin embargo, hay algunas cosas que debes tener en cuenta si vas por este camino:

  1. Debe usar coincidir en sus rutas y no obtener / publicar / poner / eliminar porque tales excepciones pueden ocurrir en cualquier solicitud HTTP;
  2. No podrá ver sus excepciones personalizadas en desarrollo a menos que establezca config.consider_all_requests_local en falso en su config / environment / development.rb. El motivo es que si la solicitud se considera local, Rails siempre favorecerá que se muestre la página de excepciones de depuración; [o ejecutar rails server -e production ]
  3. Siempre puede acceder a la excepción original en el controlador en env ["action_dispatch.exception"];
  4. No es posible configurar las cookies, la sesión ni el flash después de que ocurre una excepción. Todos ellos ya estaban serializados al cliente;
  5. Finalmente, la aplicación de excepciones predeterminada utilizada por Rails que simplemente presenta una página en public / STATUS.html está disponible aquí: action_dispatch / middleware / public_exceptions.rb

Recuerda que cualquier cosa que hagas en el controlador de errores, no debería ser nada "lujoso". ¡Manténgalo simple porque algo ya salió mal con su aplicación!


Si desea capturar errores específicos, use rescue_from en ApplicationController .

De lo contrario, si solo desea editar las páginas de error predeterminadas, edite los archivos 500.html y 400.html en {Rails.root} / public