2010-03-04 6 views
0

J'ai un problème pour afficher le message d'erreur dans Ruby on Rails. J'utilise:Comment afficher un message d'erreur descriptif?

rescue => Exception ex 
#display ex.message 

La sortie que je reçois quand j'ai essayé de l'afficher dans une boîte de message d'alerte est ceci:

"DBI::DatabaseError: 37000 (50000) [Microsoft][ODBC SQL Server Driver][SQL Server]Cannot approve records for the specified date..: Exec uspTestProc 279, 167, 2."

Il affiche quelques mots qui ne sont pas convivial pour les utilisateurs. Ce que je veux est d'afficher seulement ces mots: "ne peut approuver des enregistrements pour la date spécifiée"

Répondre

0

Dans n'importe quelle langue, je traiterais toujours toujours les exceptions et montrerais à l'utilisateur une version édulcorée.

Les utilisateurs ne devraient pas avoir l'occasion de voir le fonctionnement interne de quelque chose et les exceptions sont un excellent moyen de leur montrer un grand désordre de non-sens.

I:

  • Se connecter à l'exception réelle parce que moi, ou le responsable du système a besoin de savoir exactement ce qui est arrivé, avec un tracelog si possible.
  • Afficher à l'utilisateur soit une exception sur mesure pour spécifique au problème - "Vous avez entré les données erronées!"
  • Ou une erreur générique - "Oh non, quelque chose est allé honteusement mal !! 1" - si elle n'a pas été causée par l'utilisateur ou je n'ai pas encore de cas pour la manipulation (encore).
1

pratique courante dans Rails est d'utiliser la variable de session "flash" dans le contrôleur:

# error catching logic goes here 
flash[:error] = "There was an error!" 

# notice logic goes here 
flash[:notice] = "I am sending you a notice." 

afficher ensuite (éventuellement dans une mise en page de catchall):

<% if flash[:error] %> 
<div id="error"><%= flash[:error] %></div> 
<% end %> 

<% if flash[:notice] %> 
<div id="notice"><%= flash[:notice] %></div> 
<% end %> 

Était-ce Qu'est-ce que tu cherches?

+0

Salut. merci pour la réponse, l'erreur a été soulevée en ms sql en utilisant raiserror .. ex. Raisonne ("Ne peut pas approuver les enregistrements pour la date spécifiée") J'aime afficher le mot "Impossible d'approuver les enregistrements pour la date spécifiée" .. mais quand je l'affiche en ruby ​​on rails ce que j'ai obtenu est "DBI :: DatabaseError : 37000 (50000) [Microsoft] [Pilote ODBC SQL Server] [SQL Server] Impossible d'approuver les enregistrements pour la date spécifiée ..: Exec uspTestProc 279, 167, 2 " J'espère que vous pouvez m'aider avec cela .. merci beaucoup. –

1

Je pense qu'une erreur comme ça peut être prise par rescue_from


class ApplicationController 

    rescue_from MyException do 
    render :text => 'We have some issue in our database' 
    end 
end 
+0

Bonjour. merci pour la réponse, l'erreur a été soulevée en ms sql en utilisant raiserror .. ex. Raisonne ("Ne peut pas approuver les enregistrements pour la date spécifiée") J'aime afficher le mot "Impossible d'approuver les enregistrements pour la date spécifiée" .. mais quand je l'affiche en ruby ​​on rails ce que j'ai obtenu est "DBI :: DatabaseError : 37000 (50000) [Microsoft] [Pilote ODBC SQL Server] [SQL Server] Impossible d'approuver les enregistrements pour la date spécifiée ..: Exec uspTestProc 279, 167, 2 " J'espère que vous pouvez m'aider avec cela .. merci beaucoup. –

Questions connexes