J'ai résolu un problème similaire avec autorisation. J'ai créé un contrôleur d'autorisation simple avec cette action:
def unauthorizedxhr
render :update do |page|
page.replace_html("notice", :partial=>"unauthorizedxhr")
page.show("notice")
end
end
Voici le modèle:
<% if flash[:notice] -%>
<div id="noticexhr"><%= flash[:notice] %></div>
<% end -%>
Lorsque l'autorisation a échoué dans le contrôleur, je redirigent au: contrôleur => « autorisation », : action => "nonauthorizedxhr" après avoir réglé la valeur du flash [: notice]. Cela m'a permis de personnaliser le message que j'ai envoyé à l'utilisateur, et il a traité l'affichage du message à travers le rendu: code de mise à jour ci-dessus. Vous pouvez adapter cela à votre problème en créant un contrôleur d'erreurs, en détectant les erreurs surélevées dans vos autres contrôleurs, puis en redirigeant simplement vers: controller => "errors",: action => "displayxhr" lorsque l'appel échoue. De cette façon, vous aurez standardisé votre mécanisme de communication d'erreur mais vous aurez la possibilité de personnaliser les messages d'erreur à chaque action.
Vous pouvez toujours utiliser l'idée de cpm ci-dessus, mais l'affichage de l'erreur sera géré par une logique de contrôleur séparée et distincte. cela devrait le rendre un peu plus facile à maintenir.
Espérons que ça aide. -Chris