Ruby on rails 使用响应中包含的任何对象的URL添加json属性

Ruby on rails 使用响应中包含的任何对象的URL添加json属性,ruby-on-rails,json,api,routes,dry,Ruby On Rails,Json,Api,Routes,Dry,我在一个API中工作(不使用任何gem),我希望有好的响应 就是 如果Api使用者要求提供对象列表:Api将以仅显示两个字段的对象列表作出响应,并添加一个url为的字段,该url将访问此特定对象的所有字段 如果API使用者请求特定对象,它将使用所有字段进行响应 为此,我有一个如下控制器: module Api module V1 class QuotesController < ApplicationController respond_to :json

我在一个API中工作(不使用任何gem),我希望有好的响应

就是

  • 如果Api使用者要求提供对象列表:Api将以仅显示两个字段的对象列表作出响应,并添加一个url为的字段,该url将访问此特定对象的所有字段

  • 如果API使用者请求特定对象,它将使用所有字段进行响应

为此,我有一个如下控制器:

module Api
  module V1
    class QuotesController < ApplicationController

      respond_to :json

      def index
        @quotes = Quote.all
        respond_with @quotes
      end

      def show
        @quote = Quote.find(params[:id])
        respond_with @quote
      end

    end
  end
end
# app/views/quotes/index.json.jbuilder
json.quotes @quotes do |quote|
  json.id quote.id
  json.name quote.name
  json.amount quote.amount
  json.url quote_url(quote)
end

# app/views/quotes/show.json.jbuilder
json.quote do
  json.id @quote.id
  json.name @quote.name
  json.amount @quote.amount
  json.url quote_url(@quote)
end
模块Api
模块V1
类QuotesController<应用程序控制器
回复:json
def索引
@quotes=Quote.all
用@quotes回复你
结束
def秀
@quote=quote.find(参数[:id])
用@quote回复你
结束
结束
结束
结束
这就是模型:

   class Quote < ActiveRecord::Base
     attr_accessible :author, :text
   end
class Quote
如何在Quote.all响应中添加任何Quote的URL或路径


是否可以在包含该对象的任何json响应中包含该URL?我的意思是,如果是干的

当然,您必须自定义JSON响应

我建议您用一些jbuilder模板替换
response\u,如下所示:

module Api
  module V1
    class QuotesController < ApplicationController

      respond_to :json

      def index
        @quotes = Quote.all
        respond_with @quotes
      end

      def show
        @quote = Quote.find(params[:id])
        respond_with @quote
      end

    end
  end
end
# app/views/quotes/index.json.jbuilder
json.quotes @quotes do |quote|
  json.id quote.id
  json.name quote.name
  json.amount quote.amount
  json.url quote_url(quote)
end

# app/views/quotes/show.json.jbuilder
json.quote do
  json.id @quote.id
  json.name @quote.name
  json.amount @quote.amount
  json.url quote_url(@quote)
end