使用Sinatra和Sequel时,我的更新查询不会被执行

时间:2013-05-12 08:52:46

标签: jquery ruby sinatra sequel

我正在尝试对记录执行内联(即不使用表单而不使用其他页面)更新(以及单独但同样的问题,删除)。

我使用红宝石,sinatra和SEQUEL与postgres。

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

我认为数据库查询是正确编写的,但我认为脚本中的jquery和ruby部分不是从同一个赞美诗片中唱出来的。

当我检查我的控制台时,出现了:

"GET /update/data?user_id=31&email_address=miki%40nihon.jp.com&username=niyan123&password=braves098 HTTP/1.1"
事实上,它反映了我想要做出的改变。所以发生了一些事情,但是更新不起作用,在jquery用“更新”警报完成其流程后,记录保持不变。

我尝试删除内联记录时遇到了类似的经历。

我做错了什么?我相信整个地方都有可怕的错误。 ruby脚本应该获取,发布还是举例如何?

非常感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

如果这确实是你的代码的逐字记录,那么你的某个地方的命名不匹配:你的param被称为user_id,但你正在查询params[:id]

你确定你正在寻找Javacript代码的正确和平,或者你的浏览器没有缓存旧代码或什么?