我发出了一个AJAX请求,然后我将回复保存到数据变量中。
我的控制器:
def retrieve
data = params[:data]
@question = Question.find_by(id: params[:question_id])
@choices = @question.choices
results = []
for d in data
if Choice.find_by(id: d).correct
results << d
end
end
respond_to do |format|
format.json {
render json: {
choices: @choices.to_json(only: [:id,:correct]),
results: results,
message: "success"
}
}
end
end
回应:
Object {choices: "[{"id":1,"correct":true},{"id":2,"correct":false}]", results: Array[1], message: "success"}
我的价值未定义,应该有值。
data.choices[0].id -> returns undefined
答案 0 :(得分:3)
使用as_json
代替to_json
您的代码应为
@choices.as_json(only: [:id,:correct])
而不是
@choices.to_json(only: [:id,:correct])
有关as_json
和to_json
之间差异的详细信息,请查看此link
简单地as_json可以更好地处理复杂数据类型,例如activerecord objects