2013-04-23 18 views
0

我需要在提供此對象之前給這個對象一個命名根,有沒有更乾淨的方法來做到這一點?有沒有一種更清晰的方式給JSON對象一個命名根?

get '/api/ducks/:id' do |id| 
    content_type :json 
    duck = { 
     duck: Duck.find(id) 
    } 
    JSONP duck 
end 
+1

我不知道是什麼你使用服務器端,但也許在你的環境中,你可以有像https://github.com/rails-api/active_model_serializers – 2013-04-23 07:11:39

回答

3

我不知道你正在使用

假設你正在使用的ORM主動記錄

你可以設置 一些在哪裏應用全局配置的配置

ActiveRecord::Base.include_root_in_json = true 

Duck.find(id).as_json(:root=>true) 

http://api.rubyonrails.org/classes/ActiveModel/Serializers/JSON.html

檢查該SO回答太https://stackoverflow.com/a/6515973/518832

對於MongoMapper

class Something 
    include MongoMapper::Document 
    self.include_root_in_json = true 
end 

一第二則

JSONP Duck.where(:id=>id).to_json 

應該按照這個GitHub的評論 https://github.com/jnunemaker/mongomapper/issues/392

你也想檢查源工作,它的工作原理只是知識

https://github.com/jnunemaker/mongomapper/blob/master/lib/mongo_mapper/plugins/serialization.rb

+0

我使用Rails和MongoMapper,所以沒有 - 不使用Act iveRecord。 – Zen 2013-04-23 22:29:16

+0

@ ZenSavona我已經更新了MongoMapper的答案,希望對你有幫助 – PriteshJ 2013-04-24 05:53:01

+0

感謝你的提升。 它仍然沒有真正做我需要的東西,因爲Ember需要/ api/ducks的單個複數根和/ api/ducks /:id的單個單數根,在這裏爲每個都創建一個單獨的命名根問題,不管運行什麼查詢(Duck.all或Duck.find) – Zen 2013-04-24 06:43:53

2

唯一的清潔方法是刪除不需要的變量:

get '/api/ducks/:id' do |id| 
    content_type :json 
    JSONP { duck: Duck.find(id) } 
end 
相關問題