Rails:向控制器中的嵌套属性添加属性

问题描述

我有一个名为 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...