Ruby on rails RUBY—在哈希表中执行哈希数组的正确方法
我需要在散列中做一个散列数组,如下所示:Ruby on rails RUBY—在哈希表中执行哈希数组的正确方法,ruby-on-rails,arrays,ruby,hash,Ruby On Rails,Arrays,Ruby,Hash,我需要在散列中做一个散列数组,如下所示: merit_hash => { students => [ { "id": id, "name": name, subjects => [ { "id": id, "grade": grade }, { "i
merit_hash => {
students => [
{
"id": id,
"name": name,
subjects => [
{
"id": id,
"grade": grade
},
{
"id": id,
"grade": grade
}
]
},
{
"id": id,
"name": name,
subjects => [
{
"id": id,
"grade": grade
},
{
"id": id,
"grade": grade
}
]
}
]
}
merit = {}
merit["students"] = []
students.each do |students|
student_subjects = []
merit["students"] << {
"id" => students.id,
"name" => students.name.to_s
}
selected_batch_subjects.each do |subjects|
grade = FinalGrades.where(batch_subject_id:subjects.id, period_id: period.id, student_id: student.id).first.value
student_subjects << {"id" => subjects.id,"grade"=> grade}
end
end
现在,我只有学生哈希数组,但我不知道如何将主题数组放入其中,我正在这样做:
merit = {}
merit["students"] = []
students.each do |students|
student_subjects = Array.new
merit["students"].push(
{
"id" => students.id,
"name" => students.name.to_s
selected_batch_subjects.each do |subjects|
grade = FinalGrades.where(batch_subject_id:subjects.id, period_id: period.id, student_id: student.id).first.value
student_subjects.push(
{
"id" => subjects.id,
"grade"=> grade
}
)
end
}
)
end
但是抛出了这个错误
意外“}”,应为关键字\u end
当我尝试关闭学生哈希时。。。我能做些什么来让它工作?或者,实现这一点的最佳方式是什么
谢谢 像这样的方法应该会奏效:
merit = {}
merit["students"] = []
students.each do |student|
student_information = {"id" => student.id, "name" => student.name.to_s}
student_subjects = []
selected_batch_subjects.each do |subjects|
grade = FinalGrades.where(batch_subject_id:subjects.id, period_id: period.id, student_id: student.id).first.value
student_subjects.push({"id" => subjects.id, "grade" => grade})
end
student_information[:subjects] = student_subjects
merit["students"].push(student_information)
end
重要的部分是将每个学生的主题添加到已经存在的哈希中。类似的操作应该可以:
merit = {}
merit["students"] = []
students.each do |student|
student_information = {"id" => student.id, "name" => student.name.to_s}
student_subjects = []
selected_batch_subjects.each do |subjects|
grade = FinalGrades.where(batch_subject_id:subjects.id, period_id: period.id, student_id: student.id).first.value
student_subjects.push({"id" => subjects.id, "grade" => grade})
end
student_information[:subjects] = student_subjects
merit["students"].push(student_information)
end
重要的部分是将每个学生的主题添加到已经存在的哈希中。我不太清楚您的迭代,但对于当前循环和数组推送,您可以这样做:
merit_hash => {
students => [
{
"id": id,
"name": name,
subjects => [
{
"id": id,
"grade": grade
},
{
"id": id,
"grade": grade
}
]
},
{
"id": id,
"name": name,
subjects => [
{
"id": id,
"grade": grade
},
{
"id": id,
"grade": grade
}
]
}
]
}
merit = {}
merit["students"] = []
students.each do |students|
student_subjects = []
merit["students"] << {
"id" => students.id,
"name" => students.name.to_s
}
selected_batch_subjects.each do |subjects|
grade = FinalGrades.where(batch_subject_id:subjects.id, period_id: period.id, student_id: student.id).first.value
student_subjects << {"id" => subjects.id,"grade"=> grade}
end
end
merit={}
成绩[“学生”]=[]
学生们,每个人都是学生|
学生科目=[]
优点[“学生”]students.id,
“name”=>students.name.to_
}
选定的受试者。每个受试者|
成绩=最终成绩。其中(批次\科目\ id:subjects.id,期间\ id:period.id,学生\ id:student.id)。第一个值
student_subjects.id,“grade”=>grade}
结束
结束
我不太清楚您的迭代,但对于当前循环和阵列推送,您可以这样做:
merit_hash => {
students => [
{
"id": id,
"name": name,
subjects => [
{
"id": id,
"grade": grade
},
{
"id": id,
"grade": grade
}
]
},
{
"id": id,
"name": name,
subjects => [
{
"id": id,
"grade": grade
},
{
"id": id,
"grade": grade
}
]
}
]
}
merit = {}
merit["students"] = []
students.each do |students|
student_subjects = []
merit["students"] << {
"id" => students.id,
"name" => students.name.to_s
}
selected_batch_subjects.each do |subjects|
grade = FinalGrades.where(batch_subject_id:subjects.id, period_id: period.id, student_id: student.id).first.value
student_subjects << {"id" => subjects.id,"grade"=> grade}
end
end
merit={}
成绩[“学生”]=[]
学生们,每个人都是学生|
学生科目=[]
优点[“学生”]students.id,
“name”=>students.name.to_
}
选定的受试者。每个受试者|
成绩=最终成绩。其中(批次\科目\ id:subjects.id,期间\ id:period.id,学生\ id:student.id)。第一个值
student_subjects.id,“grade”=>grade}
结束
结束
完美!这就是我要找的。非常感谢,太好了!这就是我要找的。非常感谢你。