Рецепт содержит много ингредиентов и направлений, каждый из которых относится к рецепту. Мой views/new.html.haml
выполняет частичное, частичное, частичное вложение частичных элементов. Он отвергает при подаче заявления о том, что требуемых вложенных элементов не существует. Я не уверен, что я делаю неправильно или пропуская. Я много раз перебирал код и кокон-документы. Любая помощь будет принята с благодарностью.Рельсы вложенные формы с жемчужиной Cocoon, отвергающая ассоциация
модели/recipe.rb
has_many :ingredients
has_many :directions
accepts_nested_attributes_for :ingredients, reject_if: :all_blank, allow_destroy: true
accepts_nested_attributes_for :directions, reject_if: :all_blank, allow_destroy: true
Использование simple_form камень через _form.html.haml
частичными
%h3 Ingredients
#ingredients
= f.simple_fields_for :ingredients do |ingredient|
= render 'ingredient_fields', f: ingredient
.links
= link_to_add_association 'Add Ingredient', f, :ingredients
%h3 Directions
#directions
= f.simple_fields_for :directions do |direction|
= render 'direction_fields', f: direction
.links
= link_to_add_association 'Add Step', f, :directions
= f.button :submit
Это ссылка на частичное для каждого вложенного элемента, ингредиентов и направлений ...
views/recipes/_direction_fields.html.haml
.nested-fields
= f.input :step, input_html: { class: 'form-input form-control' }
= link_to_remove_association "Remove Step", f, class: 'btn btn-default form-button'
просмотров/рецепты/_ingredient_fields.html.haml
.nested-fields
= f.input :name, input_html: { class: "form-input form-control" }
= link_to_remove_association "Remove", f, class: "form-button btn btn-default"
При попытке представить новый рецепт с направлениями и ингредиентов, которые я получаю в откате и флэш-чтение уведомление ...
2 Предотвращенные этот рецепт от экономии
Ингредиенты рецепт должен существовать Directions рецепт должен существовать
Я предполагаю, что у вас есть валидация в «Ингредиент» и «Направление», что рецепт должен существовать, что-то вроде 'validates_presence_of: recipe'. Как вы экономите? Я думаю, что это может сработать, если вы проверите наличие ': recipe_id' (потому что в целом все они сохранены вместе). – nathanvda
Это не работает, даже если я выберу все проверки. –