是否有一种更简洁的方式为JSON对象提供命名根?

时间:2013-04-23 06:32:52

标签: ruby json ember.js jsonp

我需要在提供它之前给这个对象一个命名的根,是否有更简洁的方法呢?

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

2 个答案:

答案 0 :(得分:3)

我不知道你在使用什么样的

假设您正在使用活动记录

你可以设置     在适用于globaly的配置中的某些地方

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

答案 1 :(得分:2)

唯一更清洁的方法是删除不需要的变量:

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