在其父控制器内创建一个新对象 (Rails)

Creating a new object inside its parent controller (Rails)

因此,对于我的 Rails 项目,我有两个模型,分别称为 ButtonOrderDiv 和 ButtonFinishDiv。他们有一个 has_many/belongs_to 关系,其中一个 button_order_div 有很多 button_finish_divs,每个 button_finish_div 属于一个 button_order_div。我正在尝试编写代码,以便在用户创建新的 button_order_div 时,自动创建正确数量的 button_finish_divs。 button_order_divs有一个字段叫做number_of_parts,就是要创建的button_finish_divs个数。现在,这是我在 ButtonOrderDiv 控制器中的代码:

def create
  @button_order_div = ButtonOrderDiv.new(button_order_div_params)

  respond_to do |format|
    if @button_order_div.save

      number = @button_order_div.number_of_parts

      for i in number
        ButtonFinishDiv.create(button_order_div_id: @button_order_div.id, part: i)
      end

      format.html { redirect_to @button_order_div, notice: 'Item criado com sucesso.' }
      format.json { render :show, status: :created, location: @button_order_div }
    else
      format.html { render :new }
      format.json { render json: @button_order_div.errors, status: :unprocessable_entity }
    end
  end
end

如您所见,在 if @button_order_div.save 条件下,我试图创建一个新的 ButtonFinishDiv,但它给了我 "undefined method `each' for 3:Fixnum" 错误。我该怎么做?

Numbers (Fixnum) 没有 each 方法(当您执行 for x in y 时,您正在尝试遍历一个数字),该方法特定于array 数据结构。你想要的是这样的:

1.upto(number) do |i|
  ButtonFinishDiv.create(button_order_div_id: @button_order_div.id, part: i)
end