Удаление элементов из вложенных форм вставляет вместо удаления

В настоящее время я использую гем cocoon rails для создания вложенных форм.

Проблема возникает, когда я редактирую объект «отец» и удаляю некоторые вложенные элементы, он добавляет еще один вместо его удаления. Я создал gist-файл, который лучше объясняет это с помощью журналов консоли ruby ​​on rails. Вот он: https://gist.github.com/msmosso/310835bbb1a4b7cfe1a9.

Спасибо за аванс. Ваше здоровье!


person msmosso    schedule 21.08.2014    source источник
comment
Пожалуйста, покажите нам код. Мне особенно нужен код представления и контроллера, чтобы иметь возможность сказать что-то разумное.   -  person nathanvda    schedule 28.08.2014
comment
Вот код: gist.github.com/msmosso/6c48fb2cd0117ad43f31. Он содержит форму, частичные вложенные поля, клиентский контроллер и модели клиента и хранилища.   -  person msmosso    schedule 29.08.2014
comment
Это весь ваш код? Я не вижу непосредственной ошибки или объяснения поведения, которое вы описываете. Можете ли вы сделать минимальный проект на рельсах с этой ошибкой, выложить его на github и отправить мне ссылку? Показанный код должен просто работать imho.   -  person nathanvda    schedule 29.08.2014
comment
Для уверенности. Это страница /clientes/novo: github.com/msmosso/cocoon.   -  person msmosso    schedule 29.08.2014


Ответы (2)


В вашем client_params вы указываете, какие параметры разрешены для клиента и вложенного хранилища. Вы не указали :id для магазина, и это гарантирует, что каждый раз, когда клиент сохраняется, он будет сохранен как новый. Итак, исправление на самом деле довольно простое:

def client_params
  params.require(:client).permit(:name, stores_attributes: [:id, :client_id, :name, :name2, :district, :address, :number, :complement, :cnpj, :city_id, :mail, :obs, :status, :phone, :phone2, :phone3, :sversion, :_destroy])
end

Я не видел этого, пока не попробовал, дох!

Итак: я добавил :id и удалил :created_at и :updated_at (последние два не очень важны, но вы не хотите, чтобы они были в этом списке).

person nathanvda    schedule 29.08.2014

Поможет ли ответ на этот вопрос?

Невозможно уничтожить существующую вложенную ассоциацию

В частности, часть о allow_destroy. Удаление через действие обновления кажется довольно нерегулярным. Возможно что-то подключено неправильно.

person Michael Pell    schedule 21.08.2014
comment
У меня уже есть allow_destroy, вот моя модель клиента: gist.github.com/msmosso/8a69e582ecdeb6813058 - person msmosso; 22.08.2014
comment
Я также разрешил _destroy, как вы можете видеть здесь: gist.github.com/msmosso/1b42a62d1e1f21843cc7 - person msmosso; 22.08.2014