本人现在用 grape,jbuilder 编写 api,现在遇到了一个问题. 如下: 现在有两个数据集合 a 和 b,前台显示是要 4 个 a 的元素,1 个 b 的元素这样的.a 和 b 元素的字段也都不相同. 也就是说返回的 json 数据应该是四个 a 中元素,一个 b 中元素这样的. 求解.....
返回 json
{ a: [1, 2, 3, 4], b: [1] }
或
a: [1,2,3,4], b: 1
这样的模式是很容易的啊。看一下 ruby-china 源码地 api 是怎么写的就可以了啊。
@suffering 能给个具体的例子吗?
..... https://github.com/ruby-china/ruby-china/blob/master/app/grape/api_v2.rb
@suffering 没有找到和我的问题类似的呀,谢谢啦。
呃,你说说你的表名与字段名,以及你要返回的 JSON 模式。
就是和你给出的结构一样,json 中的每条数据都是你给出的那个结构,不知道该怎么拼成那样的结构啊。
@suffering 就是和你给出的结构一样,json 中的每条数据都是你给出的那个结构,不知道该怎么拼成那样的结构啊。
这里作两个预设: 第一,你的 api 的 routes, 比如说是 http://yourdomain.com/api/ts/xxx.json 的模式会返回那个 json 格式. 第二,a 是表 ps 的字段,名为 a; b 为表 ms 的字段。 而后你的 grape api 应该是这样写的。
class Ps < Grape::Entity expose :id, :fileda end class Ms < Grape::Entity expose :id, :filedb end resources :ts get ":xxx" do @ps_4 = Ps.all.limit(4).collect(&:a) @ms_1 = Ms.first.b { a: @ps_4, b: [@ms_1] } end end
grape 是可以直接返回原生内容的。也即是最后返回的内容,会转换成 json 数据。最后这一行,就和要返回的 json 数据结构一样。
@suffering谢谢您的指导。问题已经解决.再次标示感谢。