Rails 4:遍历数组以在控制器中创建模型

时间:2014-12-15 04:04:00

标签: ruby-on-rails arrays loops model

我将参数从视图传递给控制器​​。该参数是由用户生成的数组。用户可以根据需要向阵列添加任意数量的项目。我想迭代这个数组来在DB中创建多个模型对象。我怎么能这样做呢?

一个人可以创造一顿饭,在用餐表格中,可以选择添加任意数量的食物。

def create
    @meal= Meal.new(question_params)
    food_options = params[:food_options]
    i = 0
    if @meal.save
    food_options.each do |x| 
        @meal.foods.Create(:drink => food_option[i], :meal => @meal)
        i = +1
     end
   redirect_to @meal
else
  render 'new'
end

非常感谢任何指导

1 个答案:

答案 0 :(得分:0)

使用accepts_nested_attributes_for并让Rails为您处理。

在models / meal.rb中

class Meal < ActiveRecord::Base
  has_many :foods
  accepts_nested_attributes_for :foods   # <==========
  ...
end

并在控制器中包含嵌套属性:

class MealsController < ApplicationController
  ...
  def create
    @meal= Meal.new(question_params)
    redirect_to @meals
  else
    render 'new'
  end
  ... 
  def question_params
    params.require(:meal).permit(...., foods_attributes: [ :drink, .... ])  # <====
  end
end