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