ruby-on-rails – 自定义JSON的输出
发布时间:2020-12-17 03:39:43 所属栏目:百科 来源:网络整理
导读:在控制器中我有一个像这样的respond_with: respond_with(@layer1,@layer2) 我需要的JSON输出是这样的: { "LayerOne": [ { "name": "haha","number":"44" },// more .... ],"LayerTwo": [ { "name": "James Bond","score": 20 } //,.... ]} 因此,为了获得第
在控制器中我有一个像这样的respond_with:
respond_with(@layer1,@layer2) 我需要的JSON输出是这样的: { "LayerOne": [ { "name": "haha","number":"44" },// more .... ],"LayerTwo": [ { "name": "James Bond","score": 20 } //,.... ] } 因此,为了获得第一部分,我编写了这样的序列化器: class Layer1Serializer < ActiveModel::Serializer attributes :number,:name def name object.person.name end end 我将控制器改为这样,所以我可以传递一个ROOT,因此它在JSON中显示为“LayerOne” respond_with(@Layer1,root: 'LayerOne') 但请记住,在开始时我有两件事要传递给控制器??,所以现在我无法想象我们如何为JSON的第二部分说“Layer2” 解决方法
您可以创建以下中间类:
class BothLayers include ActiveModel def initialize(layer1,layer2) @layer1 = layer1 @layer2 = layer2 end attr_accessor :layer1,:layer2 end 和以下序列化器: class BothLayersSerializer < ActiveModel::Serializer root false has_many :layer1,key: "LayerOne" has_many :layer2,key: "LayerTwo" end 然后在你的控制器中: both_layers = BothLayers.new(@layer1,@layer2) respond_with( both_layers,serializer: BothLayersSerializer ) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- reactjs – 将服务器端呈现添加到Firebase上托管的现有Reac
- Error parsing XML: not well-formed (invalid token) 报错
- c – 是否可以在一个语句中创建一个对象并调用一个方法?
- DOJO Study Note(7) - Dojo 的扩展
- ruby-on-rails-3 – 在mongoid中获取至少一个关系对象的模型
- ruby-on-rails – Rails 2.0:为什么不使用sqlite3?
- flex学习,借鉴的网站推荐
- 人工智能实战小程序之语音_前端开发
- __FILE__ == $PROGRAM_NAME在ruby中意味着什么?
- C:如何获取变量的类型并将其用作模板