【发布时间】:2019-08-08 04:20:19
【问题描述】:
我正在尝试让我的 Rails API 以 camelCase 格式呈现所有 JSON 响应。目前我正在为我的序列化程序使用 Netflix Fast JSON API,并呈现如下错误:
render json: { errors: command.errors }, status: :unauthorized
对于 Netflix Fast JSON API 序列化程序,我一直在向每个序列化程序添加 set_key_transform :camel_lower,这似乎可以解决问题(尽管如果有人知道如何将其设为默认值,我将不胜感激。
对于渲染错误,但我不确定使用驼色套管的最佳方法。如果有人有这方面的经验,请告诉我你是怎么做的!理想情况下,有一种方法不会为每个渲染调用添加太多语法。
更新
在序列化错误时,我在应用程序控制器上添加了一个辅助方法:
def render_error(errors_params, status)
render json: {
errors: errors_params
}.deep_transform_keys { |key| key.to_s.camelize(:lower) }, status: status
end
对于 Netflix Fast JSON API,我接受了@spickermann 的建议,并添加了一个应用程序序列化器,供其他序列化器继承:
class ApplicationSerializer
include FastJsonapi::ObjectSerializer
set_key_transform :camel_lower
end
class SomeSerializer < ApplicationSerializer
attributes :attribute, :other_attribute
end
【问题讨论】:
-
你可以给
render打补丁。
标签: ruby-on-rails json ruby rails-api