在其父控制器内创建一个新对象 (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
因此,对于我的 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