ruby-on-rails Rails7 API仅不能从ActionController::RoutingError中恢复

lxkprmvk  于 2022-12-24  发布在  Ruby
关注(0)|答案(1)|浏览(151)

在我的Rails 7 API only模式下,我尝试捕获当有人尝试向api/v1/mandate而不是api/v1/mandates发出请求时的情况(典型的ActionController::RoutingError情况)。在这种情况下,它将呈现404错误,并带有一些内置的东西,如JSON响应。我想在我的BaseController中自定义JSON错误答案。我尝试:

#base_controller.rb
module Api
  module V1
    class BaseController < ActionController::API
      rescue_from ActionController::RoutingError, with: :render_not_found_error

      private

      def render_not_found_error(exception)
        render json: { error: true, message: exception.message }, status: :not_found
      end
    end
  end
end

我也有:

#config/environments/development.rb
config.consider_all_requests_local = true

但没有任何变化,仍然没有得到我的JSON错误。

nhhxz33t

nhhxz33t1#

您无法挽救控制器中的路由错误,因为异常发生在路由层,而不是控制器。
对于丢失的路由,您需要一个“捕获所有”路由,它可以捕获它们,然后将其转发到执行“异常”处理的控制器。
在实践中,这通常表现为一个NotFoundController,根据处理的路由类型执行不同的操作。

相关问题