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>

第一个警报正确显示了新值,因此该部分正在工作。

红宝石脚本如下:

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 回答