Формат JSON для GridPanel из ExtJS

Решил тут покапаться в ExtJS т.к. давно уже хотел это сделать, и вот теперь посвились время, желание и возможность. И с наскоку наступил на грабли, которые отняли у меня порядочно времени, но решение оказалось безумно простым.
Оказывается в Rails 2.1 немного изменился формат JSON. По умолчанию, для каждой записи добавляется идентификатор указывающий на класс объекта который был сериализован в эту запись. Пример:
...
[{"site": {"name": "Hi-Tech Melancholia", "id": 1}},
{"site": {"name": "RSDN", "id": 2}}]
...
Видите ключ “site”? Если он присутствует, то класс Ext.data.JsonStore не может правильно распознать JSON и, например, как следствие этого, GridPanel, который его использует не выводит данные.
Но, потратив немало врмени, я нашел решение. В файле config/initializers/new_rails_defaults.rb есть параметр ActiveRecord::Base.include_root_in_json который будучи установленный в false, убирает идентификатор класса из JSON получая такой вот результат:
...
[{"name": "Hi-Tech Melancholia", "id": 1},
{"name": "RSDN", "id": 2}]
...
Я не стал приводить весь код JSON-ответов т.к. они довольно длинные. Плюс они немного отличаются от тех JSON-ответов что формирует стандартный метод to_json т.к. я использую плагин ext_scaffold.


Добавить новый комментарий