2014-09-25 48 views
1

我有一個Post類,其中has_many: :widgets如何通過ajax創建還沒有持久關聯的新對象?

在這篇文章的編輯頁面上,用戶可以添加小部件到帖子(視頻,圖片,tweet,html塊),然後保存帖子。

我原本打算使用nested_attributes_for,但有幾個理由我不想這樣做。

相反,我選擇使用ajax實時創建小部件。

這是我的,我試圖達到的理想的工作流程的僞解釋:

  1. 用戶點擊「新郵報」上的前端,並在後端Post.new被實例化
  2. 用戶點擊一個表示add tweet widget的按鈕,以及ajax稱爲調用的端點Widget.create(widget_params)
  3. 用戶繼續添加小部件。
  4. 用戶保存該帖子,@post變爲持續。
  5. 所有這些地方加入後,如果用戶退出之前保存的頁面得到適當的分配給後
  6. 小部件,舊部件得到由後臺作業

的問題是,清理我需要這樣做,以便在創建窗口小部件時,每個窗口小部件都被分配到尚未保存的發佈。

我知道一個選項是create每次點擊「新帖子」時都會有一個新帖子,然後通過後臺工作來清理所有死者,但我不想這麼做。

我看了一個Railscast video關於嵌套的屬性,它看起來像他在做類似的事情(通過生成一個隨機ID或東西,然後使用新的對象object_id),但我不明白它會足夠(或所有)在我目前正在做的事情上實現它。

任何解釋如何做到這一點,將不勝感激。謝謝!

+0

爲什麼你不想使用嵌套屬性? – Doguita 2014-09-25 00:43:55

+0

看看繭寶石。它使構建動態的Ajax表單非常簡單。然後,您可以保存帖子,然後保存小部件。如果用戶退出既不持續也不需要後臺工作。 – engineersmnky 2014-09-25 01:38:11

+0

Coccoon和STI一起工作嗎? – Tallboy 2014-09-25 02:36:07

回答

0

您可以創建小部件並通過ajax傳回其ID,並將它們存儲在某個隱藏字段中。在用戶保存他的帖子後,您可以分配新創建的post_id的小部件。 注意:您應該將小部件與用戶關聯起來,以防有人嘗試手動向這些隱藏字段添加值。 只是一個想法。

相關問題