2013-07-11 35 views
0

我有一個父模型和一個孩子模型。我正嘗試製作一個表單,用於同時創建一個Parent及其關聯的子項。保存資源的嵌套屬性時是否需要數字索引?

在我的表單中,我有一個按鈕來「添加」一個新的Child(一個Parent可以擁有與用戶定義的一樣多的Children)。單擊按鈕時,它會爲表單添加一個隱藏字段,並將其名稱屬性設置爲一些默認值,當表單最終提交時將保存該默認值。我已經通過點擊按鈕事件添加到hidden_field_tag的形式這樣做:

hidden_field_tag "parent[children_attributes][][name]", "something" 

它創建:

<input id="children_attributes__name" name="parent[children_attributes][][name]" type="hidden" value="something"> 

這似乎是工作!但我擔心空的[]。我不確定它是什麼或爲什麼它有效,我只是發現它。使用安全嗎?

當我看使用fields_for創建表單字段,我看到它設置爲中間陣列/散列的數字索引(不管它是什麼),像這樣:

<input id="children_attributes_0_name" name="parent[children_attributes][0][name]" type="text"> 

不幸的是,我不能使用fields_for,因爲我必須在單擊「添加」按鈕時才添加隱藏字段。

這裏有什麼正確的方法?

回答

0

第二個問題「這裏有什麼正確的方法?」

我總是用Ryan Bate's nested form。爲你排序所有這些東西。

您的第一個問題「安全嗎?」

我不知道。如果我必須手動完成,我確保它在[]中具有唯一的值。

寶石,我相信使用時間戳,以保持它的獨特性。