我正在尝试对记录执行内联(即不使用表单而不使用其他页面)更新(以及单独但同样的问题,删除)。
我使用红宝石,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脚本应该获取,发布还是举例如何?
非常感谢您提供的任何帮助。
答案 0 :(得分:0)
如果这确实是你的代码的逐字记录,那么你的某个地方的命名不匹配:你的param被称为user_id
,但你正在查询params[:id]
你确定你正在寻找Javacript代码的正确和平,或者你的浏览器没有缓存旧代码或什么?