我需要在提供它之前给这个对象一个命名的根,是否有更简洁的方法呢?
get '/api/ducks/:id' do |id|
content_type :json
duck = {
duck: Duck.find(id)
}
JSONP duck
end
答案 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