2010-04-26 5 views
0

J'ai créé une action appelée error404 dans le contrôleur PagesController. Je voudrais afficher cette action si la situation suivante a eu lieu:Générer erreur 404

  1. Le contrôleur dans l'URL n'existe pas
  2. L'action dans l'URL n'existe pas

Comment puis-je y arriver?

J'ai essayé de suivre les instructions sur cette page, Show a 404 instead of 500 in Rails, mais cela semble seulement travailler avec la première situation.

Merci pour votre aide. :)

Répondre

0

Je pense que si l'action dans votre contrôleur n'est pas existé et votre contrôleur est dû à la génération d'échafaudage puis par défaut, il va à la méthode « show » d'un contrôleur.

Ex;: - http://www.domain.com/controller_name/invalid_action_name

Ici votre "nom_contrôleur" est contrôleur valide. &

"invalid_action_name" est une action non valide.

Ensuite, par défaut, il passe à la méthode 'show' de "controller_name" & considéré comme "invalid_action_name" en tant que params [: id].

donc dans la méthode show vous pouvez sauver l'erreur et peut afficher la page d'erreur valide comme « Enregistrement introuvable » ou « erreur 404 »

ÉDITÉ vous devez ajouter la route pour un nouveau nom de méthode dans votre /config/routes.rb comme suit

map.resources :controller_name, :collection=>{:show=>:get} 

ne pas oublier de redémarrer un serveur chaque fois que vous modifiez ce fichier.

+0

Merci. Je suis nouveau à RoR et pas tout à fait comprendre. J'ai créé une nouvelle action appelée "show". Quand j'ai frappé le nom_action_maladie, il n'est pas entré dans l'action "show". Il vient de me donner .... Action inconnue Aucune action a répondu à invalid_action_name. Actions: xxxx, xxxx, xxx Est-ce que j'ai fait quelque chose de mal? –

+0

vous devez ajouter l'itinéraire à vos routes.rb. s'il vous plaît regarder dans ma réponse éditée. – Salil

+0

oups. Ça ne fonctionne pas pour moi. mais merci pour votre aide de toute façon. :) –