使用Rails 4,我无法rescue_from
使用ActionController::BadRequest
:
application_controller.rb
rescue_from ActionController::BadRequest, with: :raise_bad_request
def raise_bad_request
render(nothing: true, status: 404)
end
答案 0 :(得分:9)
在内部控制器中,您只能将rescue_from
用于控制器内部引发的错误(在操作,视图或过滤器中)。
在路由将请求传递给控制器(中间件堆栈中的某个位置)之前,看起来ActionController::BadRequest
会引发。
如果您编写自己的中间件,可以处理此类错误:
class HandleErrorsMiddleware
def initialize(app)
@app = app
end
def call(env)
@app.call(env)
rescue ActionController::BadRequest
ApplicationController.action(:raise_bad_request).call(env)
end
end
raise_bad_request
应该是ApplicationController
您应该在config/application.rb
config.middleware.insert_before 'ActionDispatch::ParamsParser', 'HandleErrorsMiddleware'