【发布时间】:2012-04-20 10:47:44
【问题描述】:
我有一个 has_many 地址和许多电话的公司模型。
地址belong_to公司和电话一样。
我的问题是我不明白如何edit 公司的特定地址和电话。
在我的edit 操作中,我调用特定记录并将其分配给一个实例变量(即@address = 一些范围搜索我想要的特定地址),然后在我的fields_for 中引用这个孩子的属性,例如:
<%= f.fields_for :addresses, @address do |address| %>
A) 我不确定这是否是这样做的方法。关于如何访问父母的特定孩子进行编辑的文档很少。
B)虽然如果update 成功,这可以正常工作,但当它失败并且我render :edit 时,视图会显示父母当前孩子的附加字段(我在edit 操作中指定的那个+另一个孩子-似乎是下一条记录)。
所以基本上,当调用render :edit 时,我的表单扩展了两个孩子。很奇怪。
这是怎么回事?嵌套属性如何工作?有没有更好的方法来管理具有多个关联模型的表单?
谢谢。
【问题讨论】:
-
我不确定我是否完全按照。当您说您正在尝试编辑地址时,您是通过还包含父级的表单执行此操作,还是只是尝试以自己的表单编辑地址记录?我认为是前者,但你的解释听起来像后者。
-
是的,当我说编辑时,我正在尝试编辑整个嵌套集。看看我为 dmarucco 留下的 cmets。
-
实际上,在考虑了您的评论之后(以及对 fields_for 方法的更多研究),我意识到 fields_for 循环遍历关联中的每条记录。我试图只选择一条记录——而不是 fields_for 循环的整个集合。但是当我对您的评论进行更多思考时,我实际上想要循环。如果我只想编辑一个地址实例,我可以为此创建一个单独的表单。但作为一个嵌套记录,我想要所有的孩子。刚开始我只是不明白。太糟糕了,您没有将此作为答案发布;-)
-
是的,我想知道您是否只是在预期目的之外使用 fields_for,这就是我问的原因:) 我将其添加为答案,如果您想接受,请接受.
标签: ruby-on-rails forms nested-attributes