我有两个模型:广告和变体
型号:广告
has_one :variant
accepts_nested_attributes_for :variant
控制器广告控制器强参数:
params.require(:ad).permit(:title, :desc, variant_attributes: [:custom_image_1, :custom_image_2, :custom_image_3])
查看广告/_form苗条
= f.fields_for :variant, @ad.variant || Variant.new do |va|
- 3.times do |i|
= va.file_field "custom_image_#{i+1}"
在视图中,我使用循环添加了嵌套的表单字段。问题是当我创建任何广告时,假设我只上传一张变体形式 (custom_image_1( 的图像。现在,我回来进行编辑并在变体 (custom_image_2( 上上传了另一张图像。 更新后,我看到我之前上传的custom_image_1
被删除,数据库中只存在custom_image_2
。
背后的原因是什么?
我在提交编辑表单时检查了params
。提交的属性中仅包含custom_image_2
。
希望有人会发现它很有用:
在我的强参数中,我需要包含:id
来解决此问题。
params.require(:ad).permit(:title, :desc, variant_attributes: [:id, :custom_image_1, :custom_image_2, :custom_image_3])