在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我正尝试在我的活动表中为具有cookie指定的:id列的行更新"column_var“的值。你知道我哪里错了吗?我已经确认正在调用Javascript函数,并且已经正确设置了cookies:activity_id。
提前感谢!
发布于 2011-11-21 09:58:18
我认为这里的答案很简单,试着在@dummy_var实例变量上调用save。
要用ajax测试这类东西,可以使用Rails.logger.debug,它接受一个字符串。然后,您可以使用debug输出检查日志,看看发生了什么。此外,您还可以使用firebug之类的工具来查看请求是否响应错误。
https://stackoverflow.com/questions/8206458
复制相似问题