1

jsonを呼び出し元のアクションに戻そうとしています。私が渡したいパラメータの1つは、コレクションをループして構築された配列の配列です。

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 に答える