2017-08-24 39 views
0

我對使用ajax保存數據庫中的數據存在疑問。 (我可以做這部分)。我的問題是我有一個非常大的嵌套形式(我無法改變它)。根據輸入字段的大表格,需要將數據保存在大約100個字段中。新的字段可能會打開它取決於用戶選擇的選項。如果表單非常大,應該多長時間保存一次數據

ex-假設一個問題就像是你玩的遊戲。如果他選擇了一個遊戲,而不是下一個問題,那麼在多選擇下拉菜單中,多少次玩這個遊戲。在哪一天哪個時間等等。每個遊戲可能有不同的問題集。

現在我的問題是如何將這些數據保存在數據庫中。我應該在用戶單擊提交後保存它,還是應該將它保存在用戶之間感覺數據。以便刷新可以填充數據的數據。

我應該多頻繁地發送Ajax請求以保存數據,以及如何從新字段的字段獲取數據以及如何將其保存在Rails中。 我知道update.attributes

請幫我或給一些建議,我應該怎麼做。

回答

1

如果您現場編輯或只有保存,主要是用戶expierence問題。

但是,如果您經常保存(像自動保存)並擔心大小(無論如何,100個常規列可能會確定,儘管大文本或blob不那麼如此),那麼您想做的事情相當簡單只是保存實際上已經改變的字段。

有很多方法可以在JavaScript中實現它。您可以在用戶完成編輯後保存每個輸入(例如,輸入焦點丟失),或者您可以基於定時器進行保存並跟蹤自上次保存以來更改的字段。

然後,你的JavaScript只需在AJAX請求中包含這些字段(PATCH是一個很好的使用方法)。然後,Rails應該只嘗試保存更改的對象上的屬性(通過ActiveRecord上的update_attributessave)。如果您還想優化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用於未來的保存。

相關問題