嵌套表单触发“无法批量分配受保护的属性”警告
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 时无法批量分配虚拟属性