保存资源的嵌套属性时不需要数字索引?

时间:2013-07-11 15:48:14

标签: ruby-on-rails forms post nested-attributes ruby-on-rails-4

我有一个Parent模型和一个Child模型。我正在尝试制作一个用于同时创建父母及其相关子女的表格。

在我的表单中,我有一个“添加”新孩子的按钮(父母可以拥有与用户定义的孩子一样多的孩子)。单击该按钮时,它会将一个Child的隐藏字段添加到窗体,并将其Name属性设置为某个默认值,该窗口最终将在保存时保存。我一直在按钮点击事件中向表单添加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,因为只有在点击“添加”按钮时才需要添加隐藏字段。

这里有什么正确的方法?

1 个答案:

答案 0 :(得分:0)

你的第二个问题“这里的方法是什么?”

我总是使用Ryan Bate's nested form。为你排序所有这些东西。

您的第一个问题“使用安全吗?”

我不知道。如果我必须手动完成,我确保它在[]中的唯一值。

我认为宝石使用时间戳来保持它的独特性。