Tom*_*ssi 7 ruby-on-rails ruby-on-rails-4
使用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
Run Code Online (Sandbox Code Playgroud)
Mik*_*iet 11
在控制器内部,您只能使用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
Run Code Online (Sandbox Code Playgroud)
raise_bad_request 应该是公共方法 ApplicationController
你应该添加这个中间件 config/application.rb
config.middleware.insert_before 'ActionDispatch::ParamsParser', 'HandleErrorsMiddleware'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2763 次 |
| 最近记录: |