1

$.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
4

0 に答える 0