ExtJs4 json data.store 和 Rails

Posted

技术标签:

【中文标题】ExtJs4 json data.store 和 Rails【英文标题】:ExtJs4 json data.store and Rails 【发布时间】:2011-05-20 15:49:00 【问题描述】:

我正在尝试使用 ExtJs4 和 Ruby On Rails 创建一个简单的 CRUD 应用程序。我正在尝试使用 JSON 实现 resftul 数据存储。

我在更新记录时遇到问题。请求被发送到服务器端并且数据库正在更新,但在数据存储中我仍然有标记为“脏”的记录。当我尝试更新另一条记录时,我发送了两个请求(一个用于上一条记录,另一个用于下一条记录)。

我在创建新记录时也遇到了问题。正在服务器端创建一条记录,但在我的数据存储中,它仍被标记为未保存(脏),因此在下一次更新/创建操作期间,该记录再次发送到服务器,结果我在我的数据库中复制了记录。

问题是——如何构建一个有效的数据存储和相应的模型来使用来自 Rails 的 restful 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-account-manager/blob/master/public/javascripts/app/model/User.js

【问题讨论】:

【参考方案1】:

原因是 ExtJS JsonReader 期望 'users' 根是一个数组。这意味着当它只从您的创建和更新操作中获取单个用户对象时,它无法正确解析它,因此无法正确更新模型以标记收到的更改,从而删除脏标志。

要完成这项工作,您可以按以下方式更改 rails 操作中的格式行:

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

(注意关于单个用户对象的方括号)

这将正确更新脏标志。

【讨论】:

以上是关于ExtJs4 json data.store 和 Rails的主要内容,如果未能解决你的问题,请参考以下文章

Extjs4 - 如何从商店的第一条记录中获取价值

ExtJS4 更改数据存储参数

无法在 ExtJS4 中加载组合存储

使用 JSON 填充 ComboBox ExtJS 4.2

ExtJS 4:克隆存储

转: Ext.data.Store 修改Post请求