我有一個嚮導負責創建3種不同類型的資源。當用戶完成嚮導時,用戶點擊提交併發送ajax POST以創建3個新條目。這3個資源全部屬於用戶。我想知道是否應該向用戶控制器發送1個ajax請求,其中包含所有3個資源的詳細信息,或者如果我應該POST 3個單獨的ajax請求到每個資源的控制器。什麼是正確的方法來做到這一點?謝謝!在Rails中創建嵌套資源的最佳實踐
1
A
回答
3
首先,一個小小的更正:你不能發佈請求到資源模型。我相信你在談論的是張貼到模型的各個控制器(我認爲存在)。
如果您有嚮導的單一表單,那麼就您所瞭解的那樣,它將只發布一次。爲什麼不用這個工作?但在我們走之前,讓我們來談談替代方案。
你提出的建議是,啓動3個Ajax請求會帶來比解決問題更多的問題。例如,如果其中一個請求發生錯誤,該怎麼辦?如果你想遵循原子性原則,你如何取消另外兩個。可能還有其他的原因,爲什麼這樣的設計考慮將是一個壞的,但我認爲這是足夠的麻煩。讓我們繼續討論如何處理這個問題。
負責嚮導窗體的控制器應該提供更多的邏輯來處理3個額外的資源。如果資源類型相似,則可以使用單表繼承或其他方法來簡化某些控制器代碼,但這並不相關。我們將假設這些資源根本不相似。
簡而言之,您可以將表單構建爲多模型表單。如果用戶可以爲每種類型的資源創建多個條目,那麼您將擁有一個創建多個子模型的表單。
如果您只需要每種資源中的一種,那麼答案就非常簡單,只需在您的用戶模型中使用accepts_nested_attributes_for方法,然後在您的視圖中使用fields_for方法即可。
如果您需要每個資源的多個,那麼也許您可能希望瞭解更多關於multiple children models in a form的信息。
相關問題
- 1. 在Rails中選擇嵌套資源的最佳實踐?
- 2. Yii2 - 嵌套資源最佳實踐
- 3. 最佳實踐Mongoid:嵌套資源
- 4. Rails中嵌套資源視圖的最佳實踐?
- 5. Rails嵌套資源加入安全最佳實踐
- 6. 在Rails中創建嵌套資源4
- 7. 最佳實踐:嵌套forEach
- 8. 創建2D圖形資源的最佳實踐
- 9. 創建資源結構的最佳實踐
- 10. 資源Grails的最佳實踐
- 11. c#codegen最佳實踐的資源
- 12. 嵌套jMockit嘲笑的最佳實踐
- 13. 最佳實踐的嵌套屬性
- 14. 最佳實踐WPF棱鏡資源
- 15. ASP.NET資源參考最佳實踐
- 16. ICU資源包最佳實踐
- 17. 的Rails:在嵌套資源
- 18. VueJS嵌套組件:最佳實踐
- 19. 嵌套函數最佳實踐
- 20. Caliburn.Micro嵌套ViewModels最佳實踐
- 21. 創建嵌套資源
- 22. 最佳實踐相匹配的第二級(嵌套)資源索引行動
- 23. Rails 4 - BookingsController中的NoMethodError在使用嵌套資源時創建#
- 24. 的Rails的form_tag嵌套嵌套資源
- 25. Rails最佳實踐:在模型中創建關聯對象
- 26. 最佳實踐on Rails的
- 27. Rails的最佳實踐
- 28. Rails嵌套資源的嵌套佈局
- 29. 在Formtastic(Rails)中編輯/創建嵌套資源
- 30. 在Rails中按順序創建嵌套資源?
感謝Jaryl的詳細回覆,看起來像多模式形式是要走的路。作爲後續,如果我的一個資源不使用傳統的html 方法並使用visual javascript/html canvas輸入法,我應該使用javascript自動填寫隱藏表單?這就是爲什麼我要求自己做ajax post請求的原因,因爲我的輸入數據是以javascript的形式出現的。 –
stackOverlord
我之前沒有使用過畫布數據,但我認爲使用隱藏表單域會更好/更容易。只有當你真的需要它時纔會練習ajax,就像需要異步處理一樣。 – Jaryl