我正在尝试使用 $.post 即时向路线提交一些数据,但我目前面临一个我无法理解的神秘错误。
这是我的路线...
post "/share" do
sid = params[:sid]
user = (session[:level] == 1) ? params[:user] : session[:user]
# Database
require_relative "../../database/db.rb"
db = DBShare.new
db.share(sid, user)
end
这是我的 $.post 请求被发送到路由时得到的结果......
!! Unexpected error while processing request: undefined method `close' for 1:Fixnum
ajax 调用在 .fail() 中返回,但数据库调用已完成(我将 Sequel 用于执行存储过程的数据库调用)——有趣的是,它在第一次调用时调用该过程两次,而在后续调用中仅调用一次。
我认为这可能是因为我的路由没有返回内容标头 - 所以我在 db 调用之后添加了“成功”。
这导致 jquery 在 .success() 块中返回,但数据库调用未完成。
这是我的 jQuery 调用
// Share or unshare
$(document).on('click', '.share-unshare', function(event) {
if (event.type == 'click') {
var element = $(this);
var text = $(this).text();
var sid = $(this).attr('sid');
var r = '';
// Unshared
if (text == "Unshare") {
r = confirm("Are you sure you want to unshare this?");
if (r == false) {
return false;
}
share(sid, element);
// Shared
} else {
r = confirm("Are you sure?");
if (r != false) {
share(sid, element);
}
}
}
function share(sid, element) {
var user = $('#details').attr('user');
$.get('/share/', { 'sid' : sid, 'user': user })
.success(function(data) {
if (text == "Share") {
element.html("Unshare");
} else {
element.html("Share");
}
})
.fail(function() {
alert("Something went wrong - unable to share / unshare");
})
.always();
}
});
这是 DB 调用(该过程可以正常工作,因此不关心 PL/SQL)
def share(sid, user)
sql = "
BEGIN
pa_share.pr_share_handle(?, ?);
END;
"
ds = $db_app[sql, sid, user]
end
在这个阶段 - 我完全困惑!有没有人知道它可能是什么?
非常感谢
灰
更新:
在我的参数绑定到 db 调用之后,我设法通过添加ds.insert来解决这个问题。
def share(sid, user)
sql = "
BEGIN
pa_share.pr_share_handle(?, ?);
END;
"
ds = $db_app[sql, sid, user]
**ds.insert**
end