• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >ruby > Rails中遇到错误跳转到统一提示错误页的方法

Rails中遇到错误跳转到统一提示错误页的方法

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了rails,ruby on rails,rails是什么意思,ruby on rails教程,railsinstaller等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

一个迭代开发中的网站难免存在bug,出bug的时候客户体验就很不好了,为解决此问题,可以在class error产生的时候,触发跳转到统一提示页面,并给开发人员发邮件报错误信息,提高测试能力和用户体验。以下是核心方法;在ApplicationController中添加如下代码,不同rails版本的class error略有变化。

AR_ERROR_CLASSES = [ActiveRecord::RecordNotFound, ActiveRecord::StatementInvalid] 
  ERROR_CLASSES = [NameError, NoMethodError, RuntimeError, 
         ActionView::TemplateError, 
         ActiveRecord::StaleObjectError, ActionController::RoutingError, 
         ActionController::UnknownController, AbstractController::ActionNotFound, 
         ActionController::MethodNotAllowed, ActionController::InvalidAuthenticityToken] 
 
  ACCESS_DENIED_CLASSES = [CanCan::AccessDenied] 
 
  if Rails.env.production? 
    rescue_from *AR_ERROR_CLASSES, :with => :render_ar_error 
    rescue_from *ERROR_CLASSES, :with => :render_error 
    rescue_from *ACCESS_DENIED_CLASSES, :with => :render_access_denied 
  end 
   
  #called by last route matching unmatched routes.  Raises RoutingError which will be rescued from in the same way as other exceptions. 
 
#备注rails3.1后ActionController::RoutingError在routes.rb中最后加如下代码才能catch了。 
#rails3下:match '*unmatched_route', :to => 'application#raise_not_found!' 
#rails4下:get '*unmatched_route', :to => 'application#raise_not_found!' 
 
  def raise_not_found! 
    raise ActionController::RoutingError.new("No route matches #{params[:unmatched_route]}") 
  end 
 
  def render_ar_error(exception) 
    case exception 
    when *AR_ERROR_CLASSES then exception_class = exception.class.to_s 
    else exception_class = 'Exception' 
    end 
 
    send_error_email(exception, exception_class) 
  end 
 
  def render_error(exception) 
    case exception 
    when *ERROR_CLASSES then exception_class = exception.class.to_s 
    else exception_class = 'Exception' 
    end 
 
    send_error_email(exception, exception_class) 
  end 
 
  def render_access_denied(exception) 
    case exception 
    when *ACCESS_DENIED_CLASSES then exception_class = exception.class.to_s 
    else exception_class = "Exception" 
    end 
 
    send_error_email(exception, exception_class) 
  end
</div>

</div>

您可能想查找下面的文章:

  • Rails bundle命令安装mysql gem包出错的解决方法
  • win7安装ruby on rails开发环境
  • 简单对比分析Ruby on Rails 和 Laravel
  • 在 Ubuntu 12.04 Server 上安装部署 Ruby on Rails 应用
  • 快速正确的安装 Ruby, Rails 运行环境
  • Windows下Ruby on Rails开发环境安装配置图文教程
  • Ruby On Rails中如何避免N+1问题
  • 艰难完成 nginx + puma 部署 rails 4的详细记录
  • 学习Ruby你需要了解的相关知识(rvm, gem, bundle, rake, rails等)
  • 浅谈Rails 4 中Strong Parameters机制

相关文章

  • Ruby中gem包管理器的用法及用bundler来管理多版本的gem
  • Ruby字符串、条件、循环、数组、Hash、类基本操作笔记
  • Ruby on Rails所构建的应用程序基本目录结构总结
  • Ruby 魔法 学习笔记之一
  • Ruby中的数组和散列表的使用详解
  • Ruby实现网页图片抓取
  • 你应该知道的Ruby代码风格
  • 详解Ruby on Rails中的mailer相关使用
  • 举例理解Ruby on Rails的页面缓存机制
  • Ruby On Rails上手笔记(安装使用全过程)

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Ruby on Rails迁移时的一些注意事项
    • Rails bundle命令安装mysql gem包出错的解决方法
    • 几个加速Ruby on Rails的编程技巧
    • 详解Ruby中范围的概念
    • Ruby中的数组和散列表的使用详解
    • CentOS7下搭建ruby on rails开发环境
    • 浅析Ruby中继承和消息的相关知识
    • Rails中遇到错误跳转到统一提示错误页的方法
    • Ruby实现的最短编辑距离计算方法
    • 创建自定义的Ruby gem包的教程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有