如果表单非常大,应多久保存一次数据



我对使用 ajax 将数据保存在数据库中有疑问。(我可以做这部分(。我的问题是我有一个非常大的嵌套表单(我无法更改它(。就需要保存在数据中的输入字段而言,大约 100 个字段。新字段可能会打开它,具体取决于用户选择的选项。

例如,假设一个问题就像你玩哪个游戏。在多选下拉列表中,如果他选择一个游戏,那么下一个问题将是你玩这个游戏的频率.在哪一天哪个时间等等。每个游戏可能有不同的问题集。

现在我的问题是如何将此数据保存在数据库中。我应该在用户单击提交后保存它,还是应该在用户感觉数据之间保存它。以便他刷新数据,就可以填充数据。

我应该多久发送一次 Ajax 请求以保存数据,以及如何从新字段的字段中获取数据以及如何将其保存在 Rails 中。 我知道更新属性

请帮助我或给出一些建议,我应该怎么做。

如果您实时编辑或仅在保存时,则主要有用户经验问题。

但是,如果您经常保存(如自动保存(并且担心大小(无论如何,100 个普通列可能没问题,尽管大文本或 blob 较少(,那么您只想保存实际更改的字段。

有很多方法可以在 JavaScript 中实现这一点。您可以在用户完成编辑后保存每个输入(例如,输入丢失焦点(,或者您可以根据计时器保存并跟踪自上次保存以来更改的字段。

然后让你的JavaScript只在它的AJAX请求中包含这些字段(PATCH可能是一个很好的使用方法(。然后,Rails 应仅尝试保存您更改的对象上的属性(通过update_attributes或 ActiveRecord 上的save(。如果你还想优化SELECT,请在类上使用updateupdate_all,例如,结果如下:

MyBigRecord.update(id, title: "My new title")

您可以在此处轻松使用正常的强参数,其中仅包括params中实际存在的参数。

MyBigRecord.update(id, params.require(:my_big_record).permit(:title, :author, :etc))

如果你需要处理子对象,那么你可能需要一些特殊的处理,但想法是相同的(。一点逻辑也可以按需执行初始create,尽管您的 JavaScript 随后会收到用于将来保存的id

最新更新