我对使用ajax在数据库中保存数据存有疑问。 (我可以做这部分)。我的问题是我有一个非常大的嵌套形式(我不能改变它)。输入字段的大表格需要保存在大约100个字段的数据中。新字段可能会打开它取决于用户选择的选项。
假设有一个问题就像你玩哪种游戏一样。在多选下拉如果他选择一个游戏而不是下一个问题将是你玩这个游戏的频率。哪一天哪个时间和更多。每个游戏可能有不同的问题。
现在我的问题是如何在数据库中保存这些数据。我应该在用户点击提交后保存它还是应该在用户感觉数据之间保存它。这样他就可以刷新数据,可以填充数据。
我应该多久发送一次Ajax请求来保存数据,以及如何从新字段的字段中获取数据以及如何将其保存在Rails中。 我知道update.attributes
请帮助我或提出一些建议。
答案 0 :(得分:2)
如果您实时编辑或仅在保存时主要是用户问题。
但是如果你经常保存(比如自动保存)而且担心大小(100个普通列可能还行,尽管大文本或blob都不那么多)那么你想要做的只是简单地保存字段实际上已经改变了。
有许多方法可以在JavaScript中实现这一点。您可能只是在用户完成编辑时保存每个输入(例如输入失去焦点),或者您可以根据计时器进行保存并跟踪自上次保存以来更改的字段。
然后让你的JavaScript在其AJAX请求中包含这些字段(FlatList
这是一个很好的方法)。然后,Rails应该只尝试将属性保存在您更改的对象上(通过PATCH
或ActiveRecord上的update_attributes
)。如果您还希望优化save
,请在课程上使用SELECT
或update
。例如结束如:
update_all
您可以在此处轻松使用常规强参数,其中仅包含MyBigRecord.update(id, title: "My new title")
中实际存在的参数。
params
如果你需要处理子对象,那么你可能需要一些特殊处理,但想法是一样的)。一点点逻辑也可以按需执行初始MyBigRecord.update(id, params.require(:my_big_record).permit(:title, :author, :etc))
,尽管您的JavaScript然后会收到create
以用于将来的保存。