0

レコードをインラインで (つまり、フォームを使用せず、別のページに移動しないで) 更新 (および、別の同じ問題で削除) しようとしています。

私はpostgresでruby、sinatra、SEQUELを使用しています。

jquery スクリプトは次のとおりです。

<script>
$(".update").click(function() {
        var id = $(this).attr('id');
        alert(id);
        var email =  $('#email'+id).val();
        var user = $('#user'+id).val();
        var pass = $('#pass'+id).val();
        alert(email + ' ' + user + ' ' + pass)
        $.ajax({
        type: "GET",
        url: "/update/data",
        data: { 'id': id, 'email_address': email, 'username': user, 'password': pass },
        success: function(data){
            alert("updated")
             }
    }); 
});
</script>

最初のアラートは新しい値を正しく表示するので、その部分は機能しています。

Rubyスクリプトは次のとおりです。

get '/update/data' do
    DB[:users].where(:user_id => params[:id]).update(email_address:params[:email], username:params[:user], password:params[:pass])
    redirect '/'
end

DB クエリは正しく書かれていると思いますが、スクリプトの jquery と ruby​​ の部分は同じ賛美歌から歌われていないと思います。

コンソールを確認すると、次のように表示されました。

"GET /update/data?user_id=31&email_address=miki%40nihon.jp.com&username=niyan123&password=braves098 HTTP/1.1"

実際、これは私がやりたかった変更を反映しています。したがって、何かが起こっていますが、更新は機能しません.jqueryが「更新された」アラートでフローを完了した後、レコードは変更されません。

レコードをインラインで削除しようとして、同様の経験がありました。

私は何を間違っていますか?恐ろしいエラーがいたるところにあると確信しています。たとえば、Ruby スクリプトを get、post、または put にする必要がありますか?

提供されたヘルプに事前に感謝します。

4

1 に答える 1

0

これが実際にあなたのコードの逐語的なものである場合、どこかで名前の不一致があるよりも: あなたのパラメータは呼び出されuser_idますが、クエリを実行していますparams[:id]

Javacript コードの正しいピースを見ているのですか、それともブラウザが古いコードなどをキャッシュしていないのですか?

于 2013-05-12T12:03:22.273 に答える