Формат JSON для GridPanel из ExtJS
-
23 октября 2008 15:17
-
Комментарии

Решил тут покапаться в 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.
в формате RSS. Присоединяйся!
Добавить новый комментарий
Вы можете использовать следующие BBCode теги в комментариях:
| BBCode тег | Результат |
|---|---|
| [b]Жирный текст[/b] | Жирный текст |
| [i]Курсив[/i] | Курсив |
| [u]Подчёркнутый текст[/u] | Подчёркнутый текст |
| [url]http://example.com[/url] | http://example.com |
| [url=http://example.com]Example[/url] | Example |
|
[code]for message in @messages puts message.name end[/code] |
|
|
[quote] IE6 must die! [/quote] |
IE6 must die! |

