ruby-on-rails - 当请求的内容类型为 JSON 时,返回 JSON 响应以获取错误
问题描述
我有一个渲染 ERB 的 rails 应用程序,还有一个用于 API 端点的单独命名空间。
当出现错误时,比如 404,或一些未获救的异常......等等,rails 会在 HTML 中返回错误。
当请求的内容类型为 JSON 时,我不清楚如何/在何处放置将在 JSON 中响应的错误处理程序。
在我的 API 基本控制器中,我有
ruby
rescue_from ActiveRecord::RecordNotFound, with: ->(e) { render_error(e, :not_found) }
并且能够捕获特定的错误,但我想要一个更大的包装器来处理任何未处理的异常。对此有什么好的做法建议吗?
导轨 4.2.4 红宝石 2.1.5
解决方案
这就是我在我的应用程序中处理这种情况的方式
class ApiController < ApplicationController
rescue_from ActiveRecord::RecordNotFound, :with => :not_found
def not_found
respond_to do |format|
format.html { render :file => File.join(Rails.root, 'public', '404.html') }
format.json { render :text => '{"error": "Record not found"}' }
end
end
end
或者,
你可以使用这个request.format.json 吗?找出请求的类型并根据您呈现 json 或 html。
推荐阅读
- c# - c# 在哪里可以通过反射找到基本类型(如 int)的重载运算符的 MethodInfo
- php - 预填充动态生成的表单 php
- vue.js - 我无法在我的 vuejs 应用程序中显示 fontawesome 图标
- python - 查找一个 numpy 数组中的值位于另一个 numpy 数组中的值之间的位置
- c# - 定期在 SearchServiceClient 和子 ISearchIndexClient 单例上重新加载凭据
- dataframe - Julia:通过保留附加变量的多个值折叠 DataFrame
- matlab - 在matlab中查找定义为函数句柄的多项式的根
- sql - 来自 SELECT 查询的 UPDATE 或 SET?
- android - 绑定适配器警告?用另一种方法覆盖另一种方法
- ruby-on-rails - 拍摄场景失败截图