Rails使用jQuery / AJAX自动保存表单

时间:2015-10-13 20:08:21

标签: jquery ruby-on-rails ajax forms autosave

我知道这个问题已被问过几次,但我找不到一篇能完美解决我问题的帖子。

背景:我有一个目前正在使用Ruby on Rails和jQuery创建/更新ajax-ly的表单。我需要每30秒为每个创建/更新操作自动保存表单内容。现在,我正专注于使自动保存创建表单工作。

我有类似下面的内容:

#controller method
def create
  @report = Report.create(params)
end

#js
$(function() {
  if ($("#report").length > 1) {
    setTimeout(autoSaveForm, 30000);
  }
});

function autoSaveForm() {
  $.ajax({
    type: "POST",
    url: "report/create",
    data: $("#report").serialize(),
    dataType: "script",
    success: function(data) {
      console.log(data);
    }
  });
  setTimeout(autoSaveForm, 30000);
}

更新:仔细检查后,$(“#report”)。serialize()无效。它没有捕获表单内容。我正在使用cocoon来生成两层嵌套表单。我需要正确序列化表单内容。

更新:将“#report”替换为“form”即可。 非常感谢。

1 个答案:

答案 0 :(得分:1)

感谢您更新问题。虽然我觉得你的代码永远不会被执行因为这个检查($("#report").length > 1)(只需删除> 1部分就可以了),真正的问题是表单的嵌套。

由于嵌套表单无效(请参阅Is it valid to have a html form inside another html form?),因此您无法定位其他表单中包含的表单。

我在这里再次确认https://jsfiddle.net/2tuo3yhv

您输出的HTML是否在<form>中包含<form>标记?如果是这样,您只能使用外部表单进行定位和保存。

祝你好运,如果你能以这种方式解决问题,请告诉我!