嵌套表单触发“无法批量分配受保护的属性”警告

Posted

技术标签:

【中文标题】嵌套表单触发“无法批量分配受保护的属性”警告【英文标题】:nested form triggering a 'Can't mass-assign protected attributes warning 【发布时间】:2011-06-29 13:32:07 【问题描述】:

我有一个多层嵌套表单

用户->任务->先决条件

并以相同的形式

用户->任务->位置

位置表单工作正常,现在我正在尝试指定当前任务的先决条件。先决条件是存储在 :completed_task 字段中的 task_id。

当我提交表单时,输出中出现以下错误

警告:无法批量分配受保护的属性:prerequisite_attributes

用户中的每个任务都有一个警告。

我已经完成了与此相关的所有其他问题,确保正确引用了字段名称 :completed_task,

将 attr_accessible 添加到我的模型中(它已经存在并且我对其进行了扩展)。

我不确定我还应该做什么。

我的模型看起来像

类任务

表单使用了formtastic,我将表单通过

builder3 %> --- _prerequisite_fields.html.erb -----

有什么建议吗?

【参考方案1】:

将 :prerequisite_attributes 添加到 attr_accessible 以便批量分配

attr_accessible :user_id, :date, :description, :location_id, :prerequisite_attributes

应该让你开始。

【讨论】:

是的,做到了。这是推荐的方式吗?在我的其他嵌套形式中,我似乎不需要这个。以前我已将 :prerequisites_attributes 添加到先决条件模型中,我想这是我的错误 是的,只要您以这种方式在表单中嵌套了资源,您就可以将参数作为 resource_attributes 的哈希值传递。根据定义,这是批量分配它,因此您必须将其包含在 attr_accessible 中。

以上是关于嵌套表单触发“无法批量分配受保护的属性”警告的主要内容,如果未能解决你的问题,请参考以下文章

无法批量分配受保护的属性:配置文件,

无法批量分配受保护的属性

ActiveAdmin:无法批量分配受保护的属性:电子邮件、密码、密码确认

尝试将 Jcrop 添加到 Paperclip 时无法批量分配虚拟属性

jQuery触发嵌套表单rails cocoon上的所有实例

vue-element表格嵌套表单时,触发不同步