ExtJs4 json data.store и Rails - PullRequest
       12

ExtJs4 json data.store и Rails

2 голосов
/ 20 мая 2011

Я пытаюсь создать простое приложение CRUD, используя ExtJs4 и Ruby On Rails.Я пытаюсь реализовать хранилище данных resftul с помощью JSON.

У меня проблема с обновлением записи.Запрос отправляется на сервер и база данных обновляется, но в хранилище данных у меня все еще есть запись, помеченная как «грязная».И когда я пытаюсь обновить другую запись, мне отправляют два запроса (один для предыдущей записи и другой для следующей записи).

Также у меня возникают проблемы с созданием новой записи.Запись создается на стороне сервера, но в моем хранилище данных она по-прежнему помечается как несохраненная (грязная), поэтому во время следующего действия обновления / создания эта запись отправляется на сервер еще раз, и в результате у меня дублируются записи в моей базе данных.

Вопрос в том, как создать действительное хранилище данных и соответствующую модель для работы с restful json из Rails?

Источники моего приложения вы можете найти на моем аккаунте github: https://github.com/lucassus/extjs4-account-manager

магазин: https://github.com/lucassus/extjs4-account-manager/blob/master/public/javascripts/app/store/Users.js и модель: https://github.com/lucassus/extjs4-account-manager/blob/master/public/javascripts/app/model/User.js

1 Ответ

4 голосов
/ 25 мая 2011

Причина этого в том, что ExtJS JsonReader ожидает, что корень пользователя будет массивом. Это означает, что, когда он просто возвращает один пользовательский объект из ваших действий по созданию и обновлению, он не может правильно его проанализировать, поэтому не корректно обновляет модели, чтобы пометить полученные изменения, и, следовательно, удаляет грязный флаг.

Чтобы это работало, вы можете изменить формат строк в ваших действиях с рельсами следующим образом:

format.json { render :json => { :success => true, :users => [@user] } }

(обратите внимание на квадратные скобки, касающиеся однопользовательского объекта)

Это будет корректно обновлять грязные флаги.

...