我将参数从视图传递给控制器。该参数是由用户生成的数组。用户可以根据需要向阵列添加任意数量的项目。我想迭代这个数组来在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
端
非常感谢任何指导
答案 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