由于格式错误,控制器没有在Rails中建立关联

时间:2015-12-15 13:05:27

标签: ruby-on-rails ruby controller associations

我需要为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

更多信息:

每个Entity belongs_to Modifications EntitiesBoxes都有__ compile 'com.google.android.gms:play-services-maps:8.3.0'

2 个答案:

答案 0 :(得分:2)

因此,您希望使用现有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

答案 1 :(得分:1)

当您声明has_many关联时,声明类会自动获得与关联相关的16个方法,如提及Guide Ruby On Rails Association Has-Many

  def create

    @modification = Modification.new(change_params)
    respond_to do |format|
      if @modification.save

        @modification.entity.boxes.each do |d| 
          @modification.boxes << d # if d.present? use if condition there is nay validation in your model.
        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

希望你能来啦!