$.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 を使用します)。興味深いことに、最初の呼び出しでプロシージャを 2 回呼び出し、その後の呼び出しでは 1 回だけ呼び出します。
ルートがコンテンツ ヘッダーを返さなかったことが原因ではないかと考えたので、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