嵌套字段导致回滚

时间:2017-01-15 14:38:10

标签: ruby-on-rails

所以我遇到这个问题,其中嵌套字段导致提交回滚。我正在使用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。

1 个答案:

答案 0 :(得分:0)

英雄的复数是英雄,而不是英雄。更改代码,使其指定heroes而不是heros,然后重试。