2017-01-15 2 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

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" 

В матче. rb У меня есть

has_many :heros, dependent: :destroy 
accepts_nested_attributes_for :heros 

и hero.rb У меня есть

belongs_to :match 

я откат на нажатие покориться и на управлении @ match.errors.full_messages я получаю [ «матч Heros должны существовать»]

Любая помощь был бы весьма признателен.

Редактировать: Представления находятся в haml.

+0

Вы определили свою модельную ассоциацию, как 'Match', есть много' Heros'. Поэтому перед созданием 'heros' вам нужно сначала создать' match'. В этой строке '@match = cur_user.matches.build (matches_params)' вы создаете/обновляете 'heros', не создавая сначала' match'. –

ответ

0

Множественное героя является героев, а не Heros. Измените свой код так, чтобы он указывал heroes вместо heros и повторите попытку.

Смежные вопросы