1

我正在尝试将一些 json 返回到调用操作。我要传递的参数之一是通过循环遍历集合构建的数组数组,如下所示:

render :json => {     
:rows => @classrooms.each do |classroom|
          [classroom.name, classroom.students.count]
        end    
}  

但是,这将 :rows 设置为整个集合,而不是我想要的:

[[教室,学生],[教室,学生],[教室,学生]]

有没有办法遍历集合并在单个块中返回一个数组?

4

2 回答 2

4

Enumerable#map是这里的正确工具。

render :json => {
  :rows => @classrooms.map {|c| [c.name, c.students.count]}
}
于 2012-11-07T22:44:18.500 回答
0

另一种方法... each_with_object方法:

render :json => {     
:rows => @classrooms.each_with_object([]) do |classroom, a|
          a << [classroom.name, classroom.students.count]
        end    
}  
于 2012-11-07T22:42:12.243 回答