问题描述
我有一个名为 Litter
的模型,它接受模型 puppy
的嵌套属性。提交更新垃圾时,我想修改所有嵌套的小狗,以便添加新属性 (breed_id)。这是因为可以从窝中推断出breed_id,我不希望用户为每只小狗指定它。这是我的控制器的样子:
def update
litter_params[:puppies_attributes].each do |puppy|
puppy[1][:breed_id] = litter_params[:breed_id]
end
respond_to do |format|
if @litter.update(litter_params)
format.html { redirect_to litters_url,notice: "Litter was successfully updated." }
format.json { render :show,status: :ok,location: @litter }
else
format.html { render :edit,status: :unprocessable_entity }
format.json { render json: @litter.errors,status: :unprocessable_entity }
end
end
end
但是,出于某种原因,小狗嵌套属性继续不包含新属性 (breed_id):
Parameters: {"authenticity_token"=>"[FILTERED]","litter"=>{"dog_ids"=>["","3","10"],"breed_id"=>"115","puppies_attributes"=>{"0"=>{"_destroy"=>"false","name"=>"Oscar","id"=>"31"},"1623432054943"=>{"_destroy"=>"false","name"=>"James"}}},"commit"=>"Update Litter","id"=>"11"}
顺便说一下,这是我的litter_params
:
def litter_params
params.require(:litter).permit(:breed_id,:breeder_id,dog_ids: [],puppies_attributes: [:_destroy,:id,:name])
end
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)