gpt4 book ai didi

ruby-on-rails - rescue_from 不与 ActionController::BadRequest 一起使用

转载 作者:行者123 更新时间:2023-12-01 17:44:16 25 4
gpt4 key购买 nike

使用 Rails 4,我无法让 rescue_fromActionController::BadRequest 一起使用:

application_controller.rb

  rescue_from ActionController::BadRequest, with: :raise_bad_request

def raise_bad_request
render(nothing: true, status: 404)
end

最佳答案

在 Controller 内部,您只能使用 rescue_from 来处理 Controller 内部(在操作、 View 或过滤器中)引发的错误。

看起来 ActionController::BadRequest 在路由将请求传递到 Controller (中间件堆栈中的某个位置)之前引发。

如果您编写自己的中间件,则可以处理此类错误:

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

中的公共(public)方法

您应该在 config/application.rb 中添加此中间件

config.middleware.insert_before 'ActionDispatch::ParamsParser', 'HandleErrorsMiddleware' 

关于ruby-on-rails - rescue_from 不与 ActionController::BadRequest 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23199418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com