我无法弄清楚如何在Active Admin中使用嵌套资源输入助手,以允许我更新“父”记录的相关记录的值.
我正在尝试生成更新的模型是这样的:
class Page < ActiveRecord::Base has_many :page_attributes accepts_nested_attributes_for :page_attributes,allow_destroy: true end
其中PageAttribute有两个属性:key和:value
而ActiveAdmin模型是:
ActiveAdmin.register Page do permit_params page_attributes_attributes: [:key,:value,:_destroy => true] form do |f| f.inputs do f.has_many :page_attributes,allow_destroy: true,heading: 'Parts' do |page_part| page_part.input :key page_part.input :value end end f.actions end end
但是,当我调用http:// localhost:3000 / admin / pages / 2 / edit,并更改现有属性的值时(或当我选中Delete复选框时),会发生什么,而不是PageAttribute的新记录创建模型并保持现有关联不变.
我通读了Active Admin documentation on nested resources,以及一堆SO帖子,但无法弄清楚我做错了什么:(
解决方法
我意识到我做错了什么 – 我有点过分思考了.我不知道当您允许强参数时,您还必须在您尝试更新的关联记录上允许:id参数.我有点假设Rails魔术会照顾它.
因此,如果您更改permit_params调用以将其改为:
permit_params page_attributes_attributes: [:id,:key,:_destroy => true]
事实上,这就是the Strong Parameters section on the Active Admin Github wiki所说的,我应该注意为什么这样设置.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。