2014-09-24 45 views
0

我正在使用API​​(不使用任何gem),并且希望得到很好的响应。将json属性与响应中包含的任何对象的URL相加

也就是说,

  • 如果API消费者索要对象的列表:该API将只显示几个字段的对象和添加字段的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 

这是模型:

class Quote < ActiveRecord::Base 
    attr_accessible :author, :text 
    end 

我如何添加任何引用的URL或路径在Quote.all响应中使用

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

回答

1

当然,你必须定制你的JSON响应。

我会建议你用这样的替换respond_with一些JBuilder的模板:

# 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 
相关问题