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

时间:2015-07-27 19:29:56

标签: ruby-on-rails controller

所以,对于我的Rails项目,我有两个名为ButtonOrderDiv和ButtonFinishDiv的模型。它们具有has_many / belongs_to关系,其中button_order_div具有许多button_finish_div并且每个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,但它给了我"未定义的方法`每个' 3:Fixnum"错误。我如何使这项工作?

1 个答案:

答案 0 :(得分:1)

数字(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 1}}数据结构。你想要的是这样的:

$conn = mysql_connect("localhost", "xxxxxx","xxxxxxx");
mysql_select_db("xxxxxxx", $conn) or die(mysql_error($conn));