我需要在404错误的响应中添加一个错误消息。我在控制器中有一些方法:
def method
*some logic*
if something.present?
render json: something, serializer: SomeSerializer
else
render json: { errors: I18n.t('errors.something.no_something') }, status: :not_found
end
end
但是当我通过 Postman 发出请求时,项目的404页面就会显示出来,没有错误输出
如何显示特定的错误?
1条答案
按热度按时间piv4azn71#
Ruby on Rails在引发特定异常(例如
ActionController::RoutingError
或ActiveRecord::RecordNotFound
)时自动返回默认的404 not found
错误页面。在您的代码示例和您的描述中,很可能在实际达到
if something.present?
条件之前,代码中的某个位置已经引发了ActiveRecord::RecordNotFound
。一个简单的解决方案可能是从该异常中解救出来,并在控制器方法中返回自定义错误消息,如下所示:
结束
另一种选择是从数据库中加载记录,在未找到时不会引发
ActiveRecord::RecordNotFound
异常,而是自己处理丢失的记录。当然,这看起来是什么样的,取决于您的特定代码(您没有共享)。如果你有这样的代码:
你可以把它改成: