Afficher une 404

Bonjour,

Je voulais savoir quel était la manière propre d’afficher une erreur
404. Sur le net, j’ai constaté qu’une manière était de faire :

render :file => “#{RAILS_ROOT}/public/404.html”,:status => 404

Mais je trouve ça un peu compliqué pour ce que c’est. En effet, ayant
l’habitude de développer avec Cherrypy (une librairie Python), il
existe une méthode toute simple qui est cherrypy.NotFound()

En cherchant dans la documentation Rails, je n’ai trouvé aucune
méthode qui pourrait ressembler à ça. Donc, je voulais avoir un peu
plus d’avis sur la méthode à employer. C’est sûr que l’avantage du
système précédent, est qu’au moins on est sur de la représentation à
afficher. Mais Rails est tellement basé sur les conventions que ça me
parait bizarre, qu’il y ait pas quelque chose de plus “simple” avec
récupération automatique du fichier 404.html.

Merci pour vos informations et bonne
journée

Cyril M.

On 6/7/07, Cyril M. [email protected] wrote:

existe une méthode toute simple qui est cherrypy.NotFound()
YAKA

Tu peux par exemple ajouter la méthode suivante dans ton
ApplicationControler :
def renderNotFound( path = “#{RAILS_ROOT}/public/404.html” )
render :file => path,:status => 404
end

Et 'op, te voilà avec un renderNotFound() tout simple


Éric Daspet
http://eric.daspet.name/

Autre solution :

tu crées un controlleur “erreur404”, et tu personalise le fichier
index.rhtml comme tu le veux.

Il ne te reste plus qu’à rajouter ça à al fin de ton fichier “routes.rb”
:

map.connect ‘*erreur’, :controller=>“erreur404”

Cyril :

En cherchant dans la documentation Rails, je n’ai trouvé aucune
méthode qui pourrait ressembler à ça. Donc, je voulais avoir un
peu plus d’avis sur la méthode à employer. C’est sûr que l’avantage
du système précédent, est qu’au moins on est sur de la représentation
à afficher. Mais Rails est tellement basé sur les conventions que
ça me parait bizarre, qu’il y ait pas quelque chose de plus “simple”
avec récupération automatique du fichier 404.html.

Voir AC::B#rescue_action et AC::B#rescue_action_in_public
que tu peux éventuellement redéfinir, si le comportement par
défaut ne te convient pas, dans la classe fille ApplicationController.

-- Jean-François.


À la renverse.

On 6/7/07, Eric D. [email protected] wrote:

l’habitude de développer avec Cherrypy (une librairie Python), il
end

Et 'op, te voilà avec un renderNotFound() tout simple

Ou même en faire un plugin tout simple :slight_smile:

Donc, je vois qu’il faut que j’utilise tout simplement la modularité
de Rails. Mais rien n’est standard.

Merci pour vos réponses.


Cyril M.