2010-03-04 31 views
0

我在Ruby on Rails中显示错误消息时出现问题。我使用:如何显示描述性错误信息?

rescue => Exception ex 
#display ex.message 

输出我得到当我试图在警报消息框来显示它是这样的:

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

它显示有些话是不友善的用户。我想要显示的只是这些字词:“无法批准指定日期的记录

回答

0

在任何语言中,我通常会处理例外情况并向用户显示一个虚拟版本。

用户不应该看到某些东西的内部运作方式,例外情况是向他们展示一大堆废话的好方法。

我:

  • 记录实际的例外,因为我,还是系统维护人员需要知道到底发生了什么,以追踪日志如果可能的话。
  • 向用户显示特定于该问题的定制异常 - “您输入了错误的数据!”
  • 或者是一个普通的错误 - “Oh noes!东西发生了严重错误!! 1” - 如果它不是由用户引起的,或者我还没有处理它的情况(尚)。
1
中的Rails

常见的做法是使用控制器内的 “闪光” 会话变量:

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

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

然后显示它(可能内的全部接收布局):

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

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

是你在找什么?

+0

喜是抓。感谢您的答复,错误发生在MS SQL使用raiserror .. 前。 raiserror(“无法批准指定日期的记录”) 我喜欢显示单词“无法批准指定日期的记录”..但是当我在rails上显示它时,我得到的是这个“DBI :: DatabaseError :37000(50000)[微软] [ODBC SQL Server驱动程序] [SQL服务器]无法批准指定日期的记录..:Exec uspTestProc 279,167,2“ 希望你能帮助我.. this..many谢谢。 – 2010-03-05 10:33:05

1

我认为这样的错误可以通过rescue_from


class ApplicationController 

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

嗨。感谢您的答复,错误发生在MS SQL使用raiserror .. 前。 raiserror(“无法批准指定日期的记录”) 我喜欢显示单词“无法批准指定日期的记录”..但是当我在rails上显示它时,我得到的是这个“DBI :: DatabaseError :37000(50000)[微软] [ODBC SQL Server驱动程序] [SQL服务器]无法批准指定日期的记录..:Exec uspTestProc 279,167,2“ 希望你能帮助我.. this..many谢谢。 – 2010-03-05 10:31:47