Rails:GoogleDocs-Style Autosave

时间:2010-09-06 07:08:44

标签: ruby-on-rails ajax webforms

我正在尝试构建一个Rails应用程序,您可以在该应用程序中从页面上的多个不同位置编辑相同的模型。我希望每隔X秒自动保存更改,并可选择手动触发保存。

我提出了一个解决方案,但它似乎非常复杂,我认为其他Rails用户已经遇到过类似的问题。

我提出的解决方案是在我的页面上有一个隐藏的表单,即实际提交的表单,然后在页面周围散布多个“虚拟”表单来更新隐藏表单。

提交后,隐藏表单会更新模型,模型包含用于确定响应应返回哪些RJS文件的逻辑。它们捆绑在一起并作为更新响应发送。

一些限制:

  • 无法将整个页面包装在一个表单标记中(页面上有多个模型/控制器)
  • 可以从多个位置编辑同一字段

任何人都有更有效的方法吗?

1 个答案:

答案 0 :(得分:3)

  • 在您的页面中创建尽可能多的表单,即使是同一模型的同一个实例
  • 也是如此
  • 触发更新可以是javascript setInterval调用,也可以是表单字段上的onblur。
  • 您的控制器应该是REST控制器,它将返回json变量中的成功或错误消息以及HTTP状态(200,422)
  • 忘记rjs,想客户方。页面中的每个表单都会将表单提交给控制器的更新方法。提交表单的javascript将出现错误或成功回调,然后显示成功或错误消息。这个想法是发送表单的javascript“知道”它当前正在提交哪种形式,它应该能够显示错误或成功,依赖于它提交的表单,它不是控制器的工作。
  • 保存整个页面只是序列化所有表单中的所有字段并将其发送到更新方法。 (见serialize