在我的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错误。
1条答案
按热度按时间nhhxz33t1#
您无法挽救控制器中的路由错误,因为异常发生在路由层,而不是控制器。
对于丢失的路由,您需要一个“捕获所有”路由,它可以捕获它们,然后将其转发到执行“异常”处理的控制器。
在实践中,这通常表现为一个
NotFoundController
,根据处理的路由类型执行不同的操作。