我目前正在尝试在我的网站https://github.com/gimite/google-drive-ruby
中进行此操作因为我想将一些提交的信息存储到我的Google工作表中,每当有人提交表单时。
代表您实施""我的rails的方法,我能够将这些信息保存到我的谷歌表。但是,我有一个严重的问题,如果有超过1人同时提交表格,可能会发生三件事
1)两个表格都键入表格 2)其中一个表格是键入两次 3)(如果3个表格同时运行)一个条目丢失。
这是我的控制器中的ruby定义,当用户点击提交按钮时会触发该定义。
update = function(data) {
alert(data);
var displayStart = data._iDisplayStart;
var displayLength = data._iDisplayLength;
var records = data.aiDisplay.length;
if(displayStart != 0) {
var data = getProviderData(displayStart, displayLength, records, true);
for(var i = 0; i < data.length; i++ ) {
no = no + 1;
data[i].no = no;
try {
var json = data[i].jsonBody.replace(/\\n/g, "")
.replace(/\\'/g, "\\'")
.replace(/\\"/g, '\\"')
.replace(/\\&/g, "\\&")
.replace(/\\r/g, "\\r")
.replace(/\\t/g, "\\t")
.replace(/\\b/g, "\\b")
.replace("%", "")
.replace(/\\f/g, "\\f");
data[i].jsonContent = JsonHuman.format(JSON.parse(json)).outerHTML;
}
catch (e) {
data[i].jsonContent = data[i].jsonBody;
}
}
var recordsArray = [];
for(var j = 0; j < data.length; j++) {
var temp = [];
temp.push(data[j].no);
temp.push(data[j].responseTime);
temp.push(data[j].api);
temp.push(data[j].jsonContent);
recordsArray.push(temp);
}
// table.rows.add(recordsArray).draw();
$('#table').dataTable().fnAddData(recordsArray);
}
// drawGadget();
// wso2gadgets.update(data,"append");
return;
};
请注意,我有2个电子表格。第二张表保留行号。我使用此解决方案是因为我不确定如何防止2个人同时覆盖同一行。第一个电子表格当然是我希望更新的文件。
答案 0 :(得分:1)
我建议使用任何作业库来使用后台作业,因此当用户提交表单时,写入作业以写入google表格
http://tutorials.jumpstartlab.com/topics/performance/background_jobs.html