2010-11-04 7 views
3

Rails par défaut rendra 404.html, alors il pense qu'une erreur 404 est appropriée. Cependant, je veux le faire par page personnalisée. S'il vous plaît suggérer la bonne façon de le faire.Action personnalisée 404 dans Rails

Répondre

3

Vous pouvez utiliser render_404 monkey patching.

Ou, vous pouvez définir une route par défaut au bas de votre fichier itinéraires qui va à une action qui renvoie un code d'état 404.

Idéalement, si vous ne voulez pas de code personnalisé dans votre 404, vous pouvez simplement modifier le 404.html statique, ce qui est le plus simple.

+0

La liaison est rompue. –

4

Cette réponse est étonnamment difficile à trouver.

Si vous voulez une page statique, éditez 404.html. Terminé.

Si vous voulez une page dynamique, puis:

dans config/routes.rb:

match '*not_found', to: 'errors#error_404' unless Rails.application.config.consider_all_requests_local 

Commentez la clause unless pour tester la page 404 sur la machine de dev locale.

Générer un tas de fichiers:

rails generate controller errors error_404 

Modifier views/errors/error_404.html.erb à personnaliser.

Cela fonctionne pour Rails 3.1 et 3.2.2.

+1

qu'en est-il du code pour les pages d'erreur dynamiques pour d'autres codes d'état comme 500 ou 422? – sambehera

+1

Excellente solution! Tellement plus simple que les autres réponses que j'ai trouvées autour de ce problème. Merci. – jfdimark

Questions connexes