如何显示描述性错误消息?

时间:2010-03-04 11:38:22

标签: ruby-on-rails

我在Ruby on Rails中显示错误消息时遇到问题。我正在使用:

rescue => Exception ex
 #display ex.message

我尝试在警告消息框中显示它时得到的输出是:

  

“DBI :: DatabaseError:37000(50000)   [Microsoft] [ODBC SQL Server   驱动程序] [SQL Server]无法批准   指定日期的记录..:Exec   uspTestProc 279,167,2。“

它会显示一些对用户不友好的单词。我想要的只是显示这些词:“无法批准指定日期的记录

3 个答案:

答案 0 :(得分:1)

Rails中的常见做法是在Controller中使用“flash”会话变量:

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

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

然后显示它(可能在一个catchall布局中):

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

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

那是你在寻找什么?

答案 1 :(得分:1)

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

捕获

class ApplicationController

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

答案 2 :(得分:0)

在任何语言中,我通常会处理异常并向用户显示一个愚蠢的版本。

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

I:

  • 记录实际的异常,因为我或者系统维护者需要知道究竟发生了什么,如果可能的话,使用tracelog。
  • 向用户显示特定问题的定制异常 - “您输入了错误的数据!”
  • 或者是一般错误 - “哦,不!有些东西出了问题!1” - 如果不是由用户引起的,或者我还没有处理它的情况(还)。