Привет всем! У меня возникла проблема при обновлении приложения с Rails 5 на Rails 6. В форме есть несколько текстовых полей и выпадающее меню. При выборе опции в меню, некоторые поля должны очищаться и отключаться с помощью JavaScript. Вот в чем загвоздка: в браузере все работает отлично - поля очищаются и отключаются. Но когда данные сохраняются в базу, там остаются старые значения вместо пустых строк. Например, если было:
Поле1: Z, Поле2: Y
То должно стать:
Поле1: Z, Поле2: ‘’
или
Поле1: ‘’, Поле2: Y
Но почему-то изменения, сделанные через JavaScript, не передаются в контроллер Rails. Кто-нибудь сталкивался с подобным? Как это можно исправить?
Хм, а ты пробовал использовать event.preventDefault() в обработчике отправки формы? Это позволит перехватить стандартное поведение и вручную обновить значения полей перед отправкой. Еще можно попробовать добавить скрытые поля, которые будут обновляться вместе с видимыми - Rails их точно увидит. А вообще, странно что такая проблема возникла, может стоит проверить, не конфликтует ли твой код с Turbolinks или другими JS-библиотеками?
у меня была похожая проблема после обновления рельсов. дело в том, что js просто меняет отображение на странице, а не сами значения полей. попробуй использовать jquery .val(‘’) для очистки полей вместо .text() или .html(). еще можно попробовать добавить атрибут name к полям которые очищаешь - так рельсы точно их увидят. а если совсем не поможет, можно перехватить отправку формы через js и вручную обновить значения перед отправкой на сервер. надеюсь что-то из этого поможет. удачи в отладке!
Проблема скорее всего в том, что JavaScript меняет только отображение, а не значения самих полей формы. Попробуй использовать метод .val(‘’) для очистки полей вместо .text(‘’) или .html(‘’).
Также убедись, что отключенные поля не отправляются — добавь им атрибут disabled=“disabled”. Если это не поможет, попробуй перехватить отправку формы и вручную обновить значения полей перед отправкой на сервер.