J'ai une action qui recherche des enregistrements basés sur un paramètre d'URL. L'URL de l'action ressemble à ceci:
http://domain.com/records/filter/<filtercode>
Je comprends que certaines erreurs de rails tels que ActiveRecord :: Notlound et ActionController: RoutingError rendra 404 dans la production env. Donc, ce que j'aime faire, c'est soulever cette erreur lorsqu'un utilisateur entre dans un code de filtre invalide dans l'URL. P>
MAINTENANT, ma question: Quelle est l'erreur idéale à soulever dans ce type de situation? Y a-t-il une liste des erreurs / exceptions de rails dans le net? P> p>
3 Réponses :
S'il cherche des enregistrements et ne trouve pas la manière logique serait d'utiliser l'activeCord :: Notlound ne serait-il pas? P>
cela rend un 500 plutôt que 404
Vous sauvegardez de ActionCord :: RecordNotFound (Je pense que c'est une exception) avec un code de statut 404. Google est votre ami pour certaines choses.
Vous devriez attraper une sorte d'erreur lancée par des rails, car aucun d'entre eux n'est fait pour être confronté à l'utilisateur ... Lorsqu'une exception se bulle jusqu'à la réponse HTTP, elle se manifeste toujours comme http 500. p>
Ce qui est parfaitement normal, c'est d'attraper l'exception et de le gérer en définissant l'état HTTP à 404 et de donner votre propre erreur peut-être dire "Nous avons recherché cela, mais n'a rien trouvé". Ou, si la sécurité est une préoccupation, disons simplement "non trouvée" de manière vraiment fantaisie. P>
Vous recherchez
def show
unless @page = Page.find_by_permalink(params[:permalink])
not_found
end
end
Il retourne un 404 comme vous voulez, BTW
Quelque chose comme ça c'est mieux. ionrails.com/2010/09/28 / ...
Dupliqué possible de Comment rediriger vers un 404 dans des rails?