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]