2017-01-15 3 views
0

したがって、ネストされたフィールドがサブミット時にロールバックを引き起こしているこの問題に直面しています。私はここではレール5ロールバックを引き起こすネストされたフィールド

を使用していて、新しいです。ここで、コントローラのアクション

def new 
    @match = Match.new 
    @match.heros.build 
end 

def create 
    @match = cur_user.matches.build(matches_params) 
    @match.save 
    end 

を作成するのparams試合で

= 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" 

のform_for簡体

def matches_params 
     params.require(:match).permit(:map, heros_attributes: [:id, :hero]) 
    end 

です。私が持っているのは

has_many :heros, dependent: :destroy 
accepts_nested_attributes_for :heros 

とhero.rbに私は

belongs_to :match 

を持っている私が提出押すのと私が得るmatch.errors.full_messages @実行している上、ロールバックを取得[「ヒーローズマッチが存在しなければならない」]

すべてのヘルプ大いに感謝します。

編集:ビューはhamlにあります。

+0

モデルアソシエーションを定義したのは、 'Match'のように多くの' Heros'があります。だから、 'heroos 'を作る前にまず' match'を作る必要があります。この行で '@match = cur_user.matches.build(matches_params)'を実行すると、最初に 'match'を作成せずに' heros'を作成/更新しています。 –

答えて

0

英雄の複数は英雄、およびないヒーローです。 herosの代わりにheroesを指定してコードを変更して、再試行してください。