`
iseesea
  • 浏览: 46244 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Rails3用rescue_from自定义错误页面

阅读更多
很早之前我自定义错误页面都是重写Showexceptions的rescue_action_in_public和rescue_action_locally方法,但是这样做侵入性太强,今天偶尔看到了一个方法:rescue_from的方法,使用方法如下;
rescue_from(*klasses, &block)
它的第一个参数是出错的类型集合,可以指定多个错误类型或者出错信息,每一项都会调用klass.is_a?(klass);第二个参数是可以带一个block,我们可以使用with来指定:
出错处理是可以继承的,比如底下代码中,如果没有指定错误处理类型的话,就会调同rescue_from 'MyAppError::Base'的出错处理;
class ApplicationController < ActionController::Base
rescue_from ActiveRecord::InvalidForeignKey,ActiveRecord::StatementInvalid , :with => :show_fk_errors

    rescue_from 'MyAppError::Base' do |exception|
      render :xml => exception, :status => 500
    end

  protected

  def show_fk_errors(exception)
    render :template => "/errors/fk_error.html.erb",:object=>@exception = exception
  end
end


PS:
在ruby文件中如果有中文出错的话可以在文件开头添加
#encoding: utf-8
。。。。。。

来指定文件编码,如果还出错的话请人工转码吧。。。



1
0
分享到:
评论

相关推荐

    Rails Best Practices

    10. **错误处理与日志**:设置合适的错误处理机制,如使用`rescue_from`来捕获异常。合理使用Rails的日志功能,监控应用状态,便于问题排查。 11. **性能监控**:使用New Relic、Prometheus或自定义的性能指标监控...

    rails-api-4.0.0

    可以通过rescue_from或自定义异常类来捕获和处理错误。 七、安全与认证: API的安全性至关重要。常见的安全策略包括OAuth2、JWT(JSON Web Tokens)或API密钥。Rails提供如devise_token_auth这样的库来协助实现这些...

    使用rails6开发纯后端API项目.zip

    可以自定义错误类,使用`rescue_from`处理异常,并返回适当的HTTP状态码和错误消息。 10. **Authentication与Authorization** JSON Web Tokens (JWT) 或 Devise 是常见的认证解决方案。JWT允许无状态认证,而...

    Rails2.0资料

    - **异常处理**:Rails 2.0引入了`rescue_from`机制,允许开发者更优雅地处理异常,并可以针对不同的异常类型采取不同的处理策略。 ##### 3.7 HTTP认证 - **HTTP认证**:为保护敏感API端点,Rails 2.0提供了HTTP...

    rails50:使用Rails 5进行敏捷Web开发的源代码-web development source code

    另外,错误处理变得更统一,`rescue_from`可以捕获并处理多种异常,使代码更整洁。 三、ActionView:视图层改进 ActionView负责渲染视图模板。Rails 5支持ERB、Haml等多种模板语言,并引入了`capture_helper`,使得...

    MusicTaste-API:后端到Music Taste Web应用程序

    6. **错误处理与测试**:良好的错误处理机制是API稳定性的保障,通常会使用Rails的`rescue_from`或自定义异常类。同时,单元测试和集成测试(如RSpec和Capybara)确保代码质量与功能的正确性。 7. **版本控制**:...

    Ruby-Mail一个Ruby邮件库

    ### 3. 邮件解析 Mail库同样擅长解析接收到的邮件。它可以读取`.eml`文件或直接从邮件服务器获取邮件,然后分解其结构。通过解析邮件,可以访问所有头部字段和正文内容,甚至可以处理嵌套的MIME部分。 ```ruby ...

    可教API

    在Ruby中,可以自定义异常类并使用`rescue_from`来捕获和处理错误,或者在控制器中直接设置状态码和响应体。 5. **版本控制**: 为了保持向后兼容性,API通常需要版本化。可以使用路径参数(如`/v1/users`)或HTTP...

    ruby初学者教程(对初学者很有帮助)

    可以自定义异常类来抛出自定义错误。 ```ruby class MyError end ``` **9.3 catch和throw** `catch`和`throw`用于实现简单的异常传递机制。 ```ruby catch :my_label do throw :my_label, "Caught an ...

Global site tag (gtag.js) - Google Analytics