2010-05-28 5 views

Répondre

0

Vous pouvez le faire avec une pièce personnalisée de middleware Rack. Rails 2 fait exactement cela en actionpack/lib/action_controller/failsafe.rb, même si je ne suis pas sûr de savoir comment Rails 3 le fait. Voir the guide pour les instructions sur la façon de le faire. Dans votre cas, je pense que vous voulez faire votre propre version de ce middleware à sécurité intrinsèque, mais qui vérifie l'en-tête/url Accept et détermine le fichier d'erreur à utiliser à partir de cela, puis retirez le middleware Failsafe actuel et remplacez-le par votre version. Vous ne pouvez pas faire de rendu: xml => message_erreur,: status => 500?

0

+0

Non si le 500 est dû à une exception non interceptée, peut-être dans un before_filter. Vérifiez le fichier failsafe.rb. Rails utilise explicitement '500.html' quand ce middleware intercepte une exception, qui pourrait provenir de n'importe où dans la pile, y compris le code de l'application. Le middleware failsafe est le dernier recours de l'application. – x1a4