2

ExtJs4 と Ruby On Rails を使用して単純な CRUD アプリケーションを作成しようとしています。JSONでresftulデータストアを実装しようとしています。

レコードの更新に問題があります。リクエストはサーバー側に送信され、データベースは更新されていますが、データストアにはまだ「ダーティ」とマークされたレコードがあります。また、別のレコードを更新しようとすると、2 つの要求が送信されます (1 つは前のレコード用、もう 1 つは次のレコード用)。

また、新しいレコードの作成にも問題があります。サーバー側でレコードが作成されていますが、私のデータストアではまだ保存されていない (ダーティ) としてマークされているため、次の更新/作成アクション中にそのレコードがサーバーに再度送信され、その結果、データベースにレコードが複製されました。

問題は、有効なデータ ストアと対応するモデルを構築して、Rails から安静な json を操作する方法です。

私の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-アカウントマネージャー/ブロブ/マスター/パブリック/javascripts/app/model/User.js

4

1 に答える 1

4

この理由は、ExtJS JsonReader が「ユーザー」ルートが配列であることを想定しているためです。これは、作成および更新アクションから単一のユーザー オブジェクトを取得しただけでは、それを適切に解析できないため、モデルを正しく更新して受信した変更をマークせず、その結果ダーティ フラグを削除することを意味します。

これを機能させるには、次のように Rails アクションのフォーマット行を変更できます。

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

(単一のユーザー オブジェクトに関する角括弧に注意してください)

これにより、ダーティ フラグが適切に更新されます。

于 2011-05-25T13:53:32.660 に答える