0

我有一个公司模型,其中包含has_many地址和许多电话。

地址belong_to公司和电话。

我的问题是我不明白如何知道edit公司的特定地址和电话。

在我的edit操作中,我调用特定记录并将其分配给一个实例变量(即@address = 一些范围搜索我想要的特定地址),然后在我fields_for引用这个孩子的属性,例如:

<%= f.fields_for :addresses, @address do |address| %>

A)我不确定这是否是这样做的方法。关于如何访问父母的特定孩子进行编辑的文档很少。

B)虽然如果update成功,这可以正常工作,但当它失败时,我render :edit的视图会显示带有父母当前孩子的附加字段(我在我的edit操作中指定的那个 + 另一个孩子 - 似乎是下一条记录)。

所以基本上,我的表单在render :edit调用时扩展了两个孩子。奇怪的。

这有什么关系?嵌套属性如何工作?有没有更好的方法来管理具有多个关联模型的表单?

谢谢。

4

3 回答 3

1

听起来您在此处使用了 fields_for 帮助器超出了它的目的。根据您的描述,您想要编辑其父母关系之外的地址。如果是这种情况,您将使用 form_for 帮助程序以自己的形式(可能还有自己的控制器)编辑该地址。

如果您想以与父级相同的形式执行任何 CRUD 操作,则将使用 fields_for,从而利用 Accepts_nested_attributes_for 功能。

于 2012-04-23T01:48:13.227 回答
0

大胆地观看 dmarucco 发布的屏幕截图,以对嵌套表单有一个良好和一般的理解,然后查看我之前遇到的嵌套表单问题(我也有多对多的关系):

Rails 3.1+ 嵌套表单问题:无法批量分配受保护的属性

我在该页面的底部发布了我的解决方案。

我还使用了nested_formsimple_form gem 来格式化我的嵌套表单,所以你可能想看看

希望这能让你走上正确的道路!

于 2012-04-20T17:25:44.953 回答
-1

这些截屏视频可以为您提供超过数千个单词的帮助。

于 2012-04-20T13:36:45.393 回答