Рельсы:Редактор на месте, но нет обратной передачи?
-
22-09-2019 - |
Вопрос
Я использую Prototype в своем проекте Rails для редактирования формы на месте (через Ajax.InPlaceEditor).Однако я не хочу, чтобы он немедленно отправлял ответ и выполнял обновление - сама форма довольно сложна, и пользователь может решить отказаться от своих изменений.Только вот не могут, потому что форма незаметно (для них) обновила базу.
Итак, я думал об использовании Prototype InPlaceEditor без указания URL-адреса обратной передачи (или сделать его общим URL-адресом обратной передачи, который возвращает true), а затем как часть «onLeaveEditMode» для поля обновить скрытое поле формы с помощью новое значение.
Таким образом, когда пользователь получает необычный внешний вид встроенного редактора, но при этом может нажать «Отмена» внизу и отменить все изменения.
Итак, я приступил к этой миссии с помощью небольшого тестового прототипа, и он, кажется, работает - за исключением того, что это требует значительного количества кода JavaScript и, в некотором смысле, похоже на нарушение цели InPlaceEditor.Это должна быть решенная проблема, но мой Google-Fu не возвращает ничего такого, как я хочу.
Что-то вроде этого (но, очевидно, не в виде сетки), где вы можете редактировать поля на месте, но должны нажать «Сохранить», чтобы сохранить изменения:http://www.nitobi.com/products/grid/editors/
Пара вопросов:1) Существует ли существующий плагин рельсов или класс прототипа, который сделает это за меня?2) Если нет, разумен ли мой подход?
Спасибо!!
Решение
Если вам просто нужно ощущение встроенного редактирования.Притворяться.
- Не оставляйте поля формы без границ.Так это будет выглядеть как обычный текст.
- При наведении курсора мыши выделите фон поля.
- В фокусе показать границу (путем добавления класса или изменения встроенных стилей).
- На размытии снова скройте границы.
Вам не нужны призрачные скрытые поля.И большая часть материала — CSS.
Используйте jquery, чтобы минимизировать код JavaScript.:-)