如何配置我的API以通过JSON发送ID而不是名称?

时间:2015-02-20 18:01:45

标签: ruby-on-rails ruby json api

我正在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

2 个答案:

答案 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