自定义全局异常& Rails 4中的错误处理程序

时间:2014-04-09 12:14:23

标签: ruby-on-rails exception ruby-on-rails-4 exception-handling

在Rails 4中分配控制器操作或中间件来处理所有异常(全局)和严格参数错误的正确方法是什么?

请记住,我不想只为一个控制器做这件事。

2 个答案:

答案 0 :(得分:1)

嗯,显而易见的解决方案是应用程序控制器(/app/controllers/application_controller.rb),如果您的控制器具有7个INCSEUD操作,它应该可以正常工作。

答案 1 :(得分:0)

使用exceptions_app

<强> application.rb中

class Application < Rails::Application
   ...
   config.exceptions_app = lambda do |env|
        ExceptionController.action(:render_error).call(env)
   end
   ...
end

<强> exception_controller.rb

class ExceptionController < ActionController::Base
    layout 'application'

    def render_error
        @exception = env["action_dispatch.exception"]
        @status_code = ActionDispatch::ExceptionWrapper.new(env, @exception).status_code
        render :error_page, status: @status_code, layout: true
    end
end

取自Rails 3.2 error handling with exceptions_app (Example)