所以我遇到这个问题,其中嵌套字段导致提交回滚。我正在使用rails 5.
以下是控制器的新操作和创建操作
def new
@match = Match.new
@match.heros.build
end
def create
@match = cur_user.matches.build(matches_params)
@match.save
end
这是params
def matches_params
params.require(:match).permit(:map, heros_attributes: [:id, :hero])
end
简化form_for
= form_for(@match) do |f|
= f.label :map, value: "Map Played:"
= f.select "map",
[["Select Map", 0]
= f.label :heros, value: "Hero Played:"
= f.fields_for :heros do |h|
= h.select "hero",
[["Select Hero", 0]
= f.submit "Submit"
在match.rb中我有
has_many :heros, dependent: :destroy
accepts_nested_attributes_for :heros
并且在hero.rb中我有
belongs_to :match
我按下提交和运行@ match.errors.full_messages得到回滚我得到[" Heros匹配必须存在"]
非常感谢任何帮助。
编辑:视图是haml。
答案 0 :(得分:0)
英雄的复数是英雄,而不是英雄。更改代码,使其指定heroes
而不是heros
,然后重试。