`
yangzhihuan
  • 浏览: 170735 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

rails下自定义出错页面

阅读更多
rails出错的时候,一般都是跳转到错误跟踪的页面下,这样在开发环境下是很好的,但是对正式环境就不是太友好了,所以如果你想自定义一下出错的页面,还是有办法的.

我一般都会在lib目录下新建一个ooxx.rb文件存放下面的代码,然后在environment.rb下加载一下.

environment.rb
require File.join(File.dirname(__FILE__),'..', 'lib','ooxx')


ooxx.rb
module ActionController
  module Rescue
    protected
    #自定义的错误处理
    def rescue_action_in_public(exception)
      logger.error("rescue_action_in_public executed")
      # 这里就是你可以折腾的地方
      case exception
      when ActiveRecord::RecordNotFound, ::ActionController::RoutingError,
        ::ActionController::UnknownAction
        logger.error("404 displayed")
        render(:file  => "#{RAILS_ROOT}/public/404.html",
               :status   => "404 Not Found")
      else
        logger.error("500 displayed")
        render(:file  => "#{RAILS_ROOT}/public/500.html",
               :status   => "500 Error")
        #      SystemNotifier.deliver_exception_notification(self, request,
        #                                                    exception)
      end
    end
  end
end


请注意做完以上操作后,在开发环境下,照样会跳转到错误跟踪页面的,这是因为这个方法是否起作用取决于development.rb和production.rb中的配置:
# in production.rb
config.action_controller.consider_all_requests_local = false

# in development.rb
config.action_controller.consider_all_requests_local = true

1
0
分享到:
评论
1 楼 星情泪 2010-01-24  
貌似在application_controller.rb中添加这个方法也可以,根据返回值是true还是false来决定是否显示错误信息,在需要切换的时候就方便一些,不用重读配置文件了

def local_request?
  false
end

相关推荐

    MonoRail入门实例

    通过自定义Rescue策略,开发者可以确保即使在出错的情况下,用户也能获得良好的用户体验。 5. **Routing** Routing是MonoRail中的路由系统,负责解析用户的URL请求并将其映射到相应的控制器和动作。相比于ASP.NET...

    EditPlus 3.31 Build 860 简体中文版

    * 默认支持 Python/Ruby on Rails 语法加亮 * 改进语法加亮速度 (长行) *“未修改文档禁用保存按钮”选项 (“参数设置”-“文件”) * 在分隔命令中显示制表符和空格 * 在文件中查找允许以“;”号间隔的多文件夹名称 ...

    EditPlus 3.31 Build 1129

    * 默认支持 Python/Ruby on Rails 语法加亮 * 改进语法加亮速度 (长行) *“未修改文档禁用保存按钮”选项 (“参数设置”-“文件”) * 在分隔命令中显示制表符和空格 * 在文件中查找允许以“;”号间隔的多文件夹名称 ...

    强大的表单验证,很不错的哦!

    使用AJAX,可以在用户输入时实时验证数据,而无需刷新页面。这可以显著提升用户体验,因为错误信息能立即显示,用户可以及时更正。 4. **jQuery与插件**:jQuery库简化了JavaScript操作,同时也提供了许多表单验证...

    jinja:一个非常快速且富有表现力的模板引擎

    在调试模式下,它会提供详细的错误信息,包括出错的模板行号和源代码。 **扩展性** Jinja 允许你自定义标签和过滤器,甚至可以创建自己的模板语言子集。这使得它能够适应特定项目的需求,例如集成额外的功能或优化...

Global site tag (gtag.js) - Google Analytics