铁路验证​​错误处理

时间:2009-03-29 23:18:18

标签: ruby-on-rails error-handling

目前,当我的rails应用程序遇到错误时,它会将错误代码和堆栈跟踪转储到浏览器窗口。

如何将其关闭以便这些错误仅记录在日志中而不会输出到浏览器中?

谢谢

更正:我主要关心的只是验证错误。我想要的就是使用生成的脚手架时获得的相同功能。我想显示验证错误消息并突出显示有问题的表单字段。现在,我得到的是这个标准的开发错误输出。最初这是在我的应用程序上工作但不知何故它丢失了。

1 个答案:

答案 0 :(得分:6)

当您的服务器在生产模式下遇到错误时,它将显示默认的rails错误页面,而不是您在开发模式下看到的堆栈跟踪。

您可以将自定义静态html 500或404错误页面添加到public / 500.html和public / 404.html中。

如果您希望以不同方式处理错误,可以将以下代码放在ApplicationController中(此代码未经测试,但基于我的一个项目中非常类似的方法):

around_filter :handle_errors

def handle_errors
  begin
    yield
   rescue Exception => e
     # Handle the exception however you wish.
   end
end

请注意,上面的代码不会处理404错误。但是,您可以通过将以下内容放在config / routes.rb的底部来指定默认操作来处理无法定位的路由:

map.connect '*path', :controller => 'home', :action => 'page_not_found'

编辑:

在做了一些研究之后,有一种替代的,可能更好的自定义错误处理方法:http://brian.pontarelli.com/2007/01/14/handling-rails-404-and-500-errors/。基本上建议是覆盖rescue_action_in_public方法,如下所示:

  def rescue_action_in_public(exception)
    render :template => "shared/error", :layout => "standard", :status => "500"
  end
相关问题