Kendo UI Grid - 更新不会持续
一直试图在Kendo网格上进行更新,并遇到问题。Kendo UI Grid - 更新不会持续
我使用Rails作为后端,当我做了更新,服务器似乎表明一切正常:
Started PUT "/" for 127.0.0.1 at 2012-02-12 17:28:19 -0600
Processing by HomeController#index as
Parameters: {"models"=>"[{\"created_at\":\"2012-02-08T17:34:50Z\",
\"first_name\":\"Milla\",\"id\":2,\"last_name\":\"sfasfsdf\",\"password\":\"\",
\"updated_at\":\"2012-02-08T17:34:50Z\",\"user_name\"
:\"\"}]"}
Rendered home/index.html.erb within layouts/application (3.0ms)
Completed 200 OK in 89ms (Views: 88.0ms | ActiveRecord: 0.0ms)
然而,当我刷新视图,一切都没有改变。当我检查数据库时,当然也没有发生变化。
我通过文档跑到这里了解如何在网格中做编辑:http://demos.kendoui.com/web/grid/editing.html
而且我看了关于如何设置网格使用Rails伯克奥朗视频:http://www.youtube.com/watch?v=FhHMOjN0Bjc&context=C3f358ceADOEgsToPDskKlwC22A9IkOjYnQhYyY9HI
必须有我没有做对的事情,但我只是没有看到它。
这里是我的代码,与剑道东西的作品:
var User = kendo.data.Model.define({
id: "id",
fields: {
first_name: { validation: { required: true } },
last_name: { validation: { required: true } }
}
});
var UsersData = new kendo.data.DataSource({
transport: {
read: {
url: "/users.json"
},
create: {
url: "https://stackoverflow.com/users/create.json",
type: "POST"
},
update: {
type: "PUT"
},
destroy: {
type: "DELETE"
},
parameterMap: function(options, operation) {
if (operation !== "read" && options.models) {
return {models: kendo.stringify(options.models)};
}
}
},
batch: true,
pageSize: 5,
schema: {
model: User
}
});
$("#users-grid").kendoGrid({
dataSource: UsersData,
navigatable: true,
editable: true,
selectable: true,
pageable: true,
sortable: true,
toolbar: ["create", "save", "cancel"],
columns: [
{
field: "first_name",
title: "First Name"
},
{
field: "last_name",
title: "Last Name"
},
]
});
一些更多的研究,我已经得到了它的工作是这样的...
我加入到覆盖7个REST风格的路由的路由Rails默认给你。在你的routes.rb文件,加入这一行...
match 'users' => 'users#update', :via => :put
这基本上说,我们要通过进入控制器上的更新定义来处理所有的看跌期权。
现在在控制器定义中,您想要处理更新有点不同,因为它不是RESTful。首先,您需要解析您通过parameterMap的发送JSON,然后通过与对象属性的更新迭代的对象...
def update
respond_to do |format|
@users = JSON.parse(params[:models])
@users.each do |u|
user = User.find(u["id"])
unless user.nil?
user.update_attributes u
end
end
format.json { head :no_content }
end
end
嘿伯克 - 你达人!感谢您的帮助,现在工作很好(我真的很喜欢剑道的东西) – PhillipKregg 2012-02-14 01:46:45
您还可以修改您的数据源,因为URL键可以采取功能:
var UsersData = new kendo.data.DataSource({
transport: {
read: {
url: '/users.json',
dataType: 'json'
},
update: {
url: function (o) {
return '/users/' + o.id + '.json'
},
dataType: 'json',
type: 'PUT'
},
destroy: {
url: function (o) {
return '/users/' + o.id + '.json'
},
dataType: 'json',
type: 'DELETE',
},
create: {
url: '/users.json',
dataType: 'json',
type: 'POST'
},
parameterMap: function(options, operation) {
if (operation !== "read" && options.models) {
return {models: kendo.stringify(options.models)};
}
}
},
batch: true,
pageSize: 5,
schema: {
model: User
}
});
你如何设置处理后端的PUT?由于您正在批量发送数据,因此您必须以不同的方式处理它。也许检查这个帖子? http://stackoverflow.com/questions/1507011/bulk-update-objects-using-form-in-rails – 2012-02-13 20:30:58