0

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

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

2 回答 2

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

于 2013-04-23T07:23:22.217 回答
2

唯一更干净的方法是删除不需要的变量:

get '/api/ducks/:id' do |id|
    content_type :json
    JSONP { duck: Duck.find(id) }
end
于 2013-04-23T07:20:13.573 回答