Вложенные формы Rails с драгоценным камнем Cocoon, отклонение ассоциации

В рецепте много ингредиентов и направлений, каждое принадлежит рецепту. Мой views/new.html.haml отображает партиал _form, который отображает вложенные партиалы. Он отклоняет отправку, говоря, что требуемые вложенные элементы не существуют. Я не уверен, что я делаю неправильно или отсутствует. Я неоднократно просматривал код и документы кокона. Любая помощь будет принята с благодарностью.

модели/рецепт.рб

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

Это ссылки на партиал для каждого вложенного элемента, ингредиентов и направлений...

представления/рецепты/_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 Предотвращено сохранение этого рецепта

Должен существовать рецепт ингредиентов Должен существовать рецепт направлений


person n.milsht    schedule 17.12.2016    source источник
comment
Я предполагаю, что у вас есть проверка в Ingredient и Direction, что рецепт должен существовать, что-то вроде validates_presence_of :recipe. Как вы экономите? Думаю может сработать, если проверить наличие :recipe_id (ибо вообще они все вместе сохраняются).   -  person nathanvda    schedule 18.12.2016
comment
Это не сработает, даже если я уберу все проверки.   -  person n.milsht    schedule 19.12.2016


Ответы (1)


Это решило мою проблему. атрибуты драгоценного камня кокона не сохраняются при создании нового рецепта

Rails 5 теперь требует, чтобы вы объявляли inverse_of в ассоциациях моделей.

person n.milsht    schedule 18.12.2016