我正在Ruby中配置基本API。它包含两个简单的表和一个关联,但我的连接表给了我一个应该很容易解决的问题。当我在浏览器中打开我的视图时,它会显示对象name
(在本例中为people
)。但是,在view.json中它显示id
。我希望API将name
作为JSON发送,而不是id
。我怎样才能做到这一点?我的API配置如下:
json.array!(@leituras) do |leitura|
json.extract! leitura, :id, :pessoa_id, :livro_id
json.url leitura_url(leitura, format: :json)
end
答案 0 :(得分:0)
您应该尝试RABL https://github.com/nesquena/rabl。 RABL实现了一个新模板来渲染Json,xml,...作为视图。我正在使用我的API,它非常有用。
答案 1 :(得分:0)
我建议使用Active Model Serializers。
我不推荐使用RABL,你最终可能会遇到一堆n + 1个查询,个人认为DSL有点奇怪。
为您的对象添加序列化程序。
class LeituraSerializer < ActiveModel::Serializer
attributes :id, pessoa_id, :livro_id
end
在你的控制器中你可以做到
class LeiturasController < ApplicationController
def show
@leituras = Leitura.find(params[:id])
render json: @leituras
end
end
在此处阅读更多内容:https://github.com/rails-api/active_model_serializers/blob/master/README.md