问题✅:render json的格式支持。to_json被改成as_json,功能一样

class StudentsController < ApplicationController
def show
 @student = Student.find(params[:id])

 render json: @student.to_json(:include => {:courses => {:include => :teacher }})

不清楚include的出处(已经解决见下)

to_json(options = {} )   (点击链接见早期版本2.n的api)改成as_json了

except: []和:only: [] 可以用于区分实例对象的属性。

:include是用于关联对象。例子:@lists.to_json(include: :cards)

:include可以用于多重嵌套。

早期版本3.0前中有这个方法,已经遗弃,但还可以使用。

render json: {
 name: @student.name,
 course:
  @student.courses.map { |c|
   {id: c.id, name: c.name, teacher: c.teacher}
  }
}

把对象中的属性提取出来,组成一个key/value对儿。

注意:遍历并返回处理的结果需要使用 Array#map方法

不能使用each, 因为each返回的是对象本身。

> [1, 2].map{|x| x +1}
=> [2, 3]
> [1, 2].each{|x| x +1}
=> [1, 2]

原文地址:https://www.cnblogs.com/chentianwei/p/9508836.html