无法访问从后端返回的JSON数据

时间:2015-09-15 12:46:02

标签: jquery ruby-on-rails json ajax ruby-on-rails-4

我发出了一个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

1 个答案:

答案 0 :(得分:3)

使用as_json代替to_json

您的代码应为

@choices.as_json(only: [:id,:correct])

而不是

@choices.to_json(only: [:id,:correct])

有关as_jsonto_json之间差异的详细信息,请查看此link

简单地as_json可以更好地处理复杂数据类型,例如activerecord objects