连接红宝石中的对象

时间:2015-09-24 08:09:16

标签: ruby-on-rails ruby json

我有一个名为teacher的对象和另一个名为students的对象。我试图在控制器中将它们作为json响应返回,我希望响应像

{'teacher': {'first_name': 'adam', 'last_name': 'smith'}, 'students': [{'id':'5', 'age' :15}, {'id':'8', 'age' :18}]}

或在一对一关系的情况下(一名教师有一名学生):

{'teacher': {'first_name': 'adam', 'last_name': 'smith'}, 'students':{'id':'8', 'age' :18}}

重点是返回一个连接的json响应,其中一个对象出现在另一个对象

我尝试了teacher.as_json.merge(students.as_json),但这并没有将学生对象嵌入教师中。它只是附加数据

我在一篇文章中看到teacher['students'] = students应该有效,但我总是出错:can't write unknown attribute students

2 个答案:

答案 0 :(得分:1)

teacher.as_json.merge(students: (students.count > 1 ? students.as_json : students.first.as_json ))

答案 1 :(得分:0)

完全按照JSON的说法完成。如果您有teacher对象和students对象,请渲染此对象:

{ teacher: teacher, students: students }
相关问题