Рельсы рендеринга JSON -> Квадратные Brakets? - PullRequest
0 голосов
/ 24 ноября 2010

Я отрисовываю некоторый объект, используя json:

def index
  if user_signed_in?
   @todos = current_user.todos.find_all()
   render :json => @todos
  else
    return nil
  end
end

это действительно так, но есть проблема.Я получаю квадратные скобки [] вокруг вывода json, и некоторые плагины или средства просмотра json не могут прочитать его из-за них.Вот пример вывода:

[{"todo":{"name":"Test todo","created_at":"2010-11-24T07:40:07Z","updated_at":"2010-11-24T07:40:07Z","done":0,"id":1,"user_id":1}},{"todo":{"name":"Ali Test","created_at":"2010-11-24T07:40:30Z","updated_at":"2010-11-24T07:40:30Z","done":0,"id":2,"user_id":1}}]

заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 15 марта 2013

Чтобы получить вывод JSON, вы ожидаете, что вам нужно отобразить Hash, а не Array. Вот подробный пост о конвертации:

Как лучше всего преобразовать массив в хеш в Ruby

Краткий обзор с синтаксисом OP:

 render :json => Hash[*@todos.flatten]

или для асимметричного массива

render :json => Hash[@todos.map {|key, value| [key, value]}]

В некоторых случаях это добавляет лишние значения NULL, которые вам не нужны, и вам, возможно, придется разбить массив и сгладить его или просто использовать Hash [вместо [когда это возможно.

]
0 голосов
/ 24 ноября 2010

Вы пробовали?

render :json => @todos.to_json
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...