Это ошибка для метода hash # to_json в Rails? - PullRequest
0 голосов
/ 17 июля 2010

Я использую рельсы 2.3.8

  def index
    @posts = Post.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render :json => ({ :results => @posts.size, :rows => @posts.to_json(:only => [:id, :title, :click_count, :body])}).to_json }
    end
  end

сгенерированные данные JSON:

{ "строки": " [{\" название \ ": \" Рубин \», \ "тело \": \ "GoooD \", \ "click_count \": 1, \ "идентификатор \": 1}, {\ "название \": \ "г \", \ "тело \": \ "Н \", \ "click_count \": 1, \ "идентификатор \": 2}] "," результаты ": 2}

но на самом деле это должно быть:

{ "строки": [{\ "название \": \ "Рубин \", \ "тело \": \ "GoooD \", \ "click_count \": 1, \ "идентификатор \": 1} , {\ "название \": \ "г \", \ "тело \": \ "Н \", \ "click_count \": 1, \ "идентификатор \": 2}], "результаты": 2}

это ошибка в рельсах?

а теперь как to_json может сгенерировать ожидаемые данные json для меня?

Спасибо!

1 Ответ

1 голос
/ 17 июля 2010

Извините, это была моя ошибка.

код действия должен быть

  def index
    @posts = Post.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render :json => ({ :results => @posts.size, :rows => @posts.map{|x| x.attributes}).to_json } }
    end
  end

То есть: значение ключа: строки должно быть объектом массива!

Спасибо, оооочень!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...