在提供它之前,我需要给这个对象一个命名的根,有没有更清洁的方法呢?
get '/api/ducks/:id' do |id|
content_type :json
duck = {
duck: Duck.find(id)
}
JSONP duck
end
不知道你用的是什么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
唯一更干净的方法是删除不需要的变量:
get '/api/ducks/:id' do |id|
content_type :json
JSONP { duck: Duck.find(id) }
end