使用XMLHttpRequest调用Rails方法来更新数据库中的值

Using XMLHttpRequest to call a Rails method to update a value in the db

本文关键字:数据库 更新 XMLHttpRequest 调用 Rails 方法 使用      更新时间:2023-09-26

在html页面上,我在Javascript中使用异步XMLHttpRequest请求来为Ruby on Rails应用程序更新数据库中的值。这个更新需要在用户不知情的情况下"幕后"进行。不幸的是,因为这个请求没有输出html(这是一个异步请求),所以很难调试为什么数据库值没有更新。

在初始html。Erb文件,javascript如下所示:

function NAME() {
  var url = '/custom_path'; // this path points to the update method in my controller
  var request = new XMLHttpRequest();
  var params = null;
  request.open("POST",  url, true); // open asynchronous post request
  request.send(params);
}

我实际上没有传递任何参数,因为我需要的唯一值存储在cookie中(您将在该方法的代码摘录中看到)。我的路由文件包括以下行:

match'/customer_path', :to => 'activities#update' 

最后,Activity表中"update"方法的代码如下:

def update
  @dummy_var = Activity.find(cookies[:activity_id])
  @dummy_var.column_var = false
  render :layout => false
end

我试图更新"column_var"的值在我的活动表的行与cookie指定的:id列。知道我哪里做错了吗?我已经确认Javascript函数正在被调用,并且cookies[:activity_id]已被正确设置。

提前感谢!

我认为答案很简单,尝试在@dummy_var实例变量上调用save。

要用ajax测试这类东西,可以使用Rails.logger.debug,它接受一个字符串。然后,您可以使用调试输出检查日志,看看会发生什么。您还可以使用firebug之类的东西来查看请求是否响应错误。