我需要为 Modification 模型 if.save 建立新的关联。此外,这些关联需要与相关的 Entity 模型相同。但我收到此错误:


ModificationController.rb

def create
    @modification = Modification.new(change_params)

    respond_to do |format|
      if @modification.save

        @modification.entity.boxes.each do |d|
          @modification.boxes.new(d)
        end

        flash[:success] = "Success"
        format.html { redirect_to @modification }
        format.json { render :show, status: :created, location: @modification }
      else
        format.html { render :new }
        format.json { render json: @modification.errors, status: :unprocessable_entity }
      end
    end
  end

更多信息:

每个 Modification 都属于 EntityModificationsEntities has_many Boxes

最佳答案

所以你想使用现有的 Box 创建一个新的框关联。我们可以获取现有框的属性来创建新框。然而,一个现有的盒子已经有一个 id ,所以我们需要从属性中排除它。

按照上述逻辑,以下应该有效:

def create
  @modification = Modification.new(change_params)

  respond_to do |format|
    if @modification.save

      @modification.entity.boxes.each do |d|
        @modification.boxes << d.dup
      end

      flash[:success] = "Success"
      format.html { redirect_to @modification }
      format.json { render :show, status: :created, location: @modification }
    else
      format.html { render :new }
      format.json { render json: @modification.errors, status: :unprocessable_entity }
    end
  end
end

关于ruby-on-rails - 由于格式错误, Controller 无法在 Rails 中建立关联,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34290074/

10-16 18:43