我有配方设置为
的配方和配料模型Recipe has_many :ingredients
accepts_nested_attributes_for :ingredients, :reject_if => :all_blank, :allow_destroy => true
Ingredient belongs_to :recipe
和recipes_controller中定义的强参数
def recipe_params
params.require(:recipe).permit(:title, :image, :serving, :prep, :cook, :steps, ingredients_attributes: [:id, :name, :_destroy])
end
并且提交的表单发送以下参数
Request
Parameters:
{"utf8"=>"✓",
"_method"=>"patch",
"authenticity_token"=>"zT+9YEIh6ZNxO3wrV8ajj8NyVaTfPDel171hasWk2DA=",
"recipe"=>{"title"=>"Recipe with image",
"serving"=>"3",
"prep"=>"10 min ",
"cook"=>"19 min"},
"ingredient"=>{"name"=>["Chicken", "Beef"]},
"commit"=>"Update Recipe",
"id"=>"4"}
问题是额外的成分Beef
不会在数据库中持久存在。
我想知道我是否也必须传递recipe_params
中定义的ingredient_id哈希,或者我需要在参数中使用某种参考来与配方相关联。
这个附加字段是使用脚本生成的,我并不认为在提交表单后这个值会丢失,因为它在请求参数中显示。
我很感激您的意见。
答案 0 :(得分:2)
在视图中创建表单时使用fields_for? 你发布的包含成分,但应该包含ingredients_attributes
关注http://railscasts.com/episodes/196-nested-model-form-part-1