6
votes

Quelle est l'erreur idéale à soulever lorsque l'URL saisie par l'utilisateur est incorrecte?

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>
  • Soulevez une erreur de sorte que HOPTOAD fera rapport à une erreur pour moi. Li>
  • Rendez un 404 au lieu d'une 500 dans la production env. Li> ul>

    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>


1 commentaires

3 Réponses :


2
votes

S'il cherche des enregistrements et ne trouve pas la manière logique serait d'utiliser l'activeCord :: Notlound ne serait-il pas?


2 commentaires

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.



3
votes

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.

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.


0 commentaires

5
votes

Vous recherchez

def show
  unless @page = Page.find_by_permalink(params[:permalink])
    not_found
  end
end


2 commentaires

Il retourne un 404 comme vous voulez, BTW


Quelque chose comme ça c'est mieux. ionrails.com/2010/09/28 / ...