Rails: редактор на месте, но без обратной передачи?

Я использую Prototype в своем проекте Rails для редактирования на месте (через Ajax.InPlaceEditor) формы. Однако я не хочу, чтобы он немедленно отправлял сообщения и делал обновление - сама форма довольно сложна, и пользователь может отказаться от своих изменений. Только теперь они не могут, потому что форма незаметно (для них) обновила базу данных.

Итак, я думал о том, чтобы использовать Prototype InPlaceEditor без указания URL-адреса обратной передачи (или сделать его универсальным URL-адресом обратной передачи, возвращающим значение true), а затем в качестве части "onLeaveEditMode" для поля обновить его скрытым полем формы с помощью новое значение.

Таким образом, когда пользователь получает необычный внешний вид редактора на месте, но все еще может нажать "Отмена" внизу и отменить все изменения.

Итак, я приступил к выполнению этой миссии в небольшом тестовом прототипе, и он, кажется, работает - за исключением того, что это означает значительный объем кода JavaScript и, в некотором смысле, похоже на свержение цели InPlaceEditor. Это должно быть решенной проблемой, но мой Google-фу не возвращает ничего, как я хочу.

Что-то вроде этого (но, очевидно, не в виде сетки), где вы можете редактировать поля на месте, но должны нажать "сохранить", чтобы зафиксировать ваши изменения: http://www.nitobi.com/products/grid/editors/

Пара вопросов: 1) Есть ли существующий плагин rails или класс Prototype, чтобы сделать это для меня? 2) Если нет, мой подход звучит разумно?

Спасибо!!

1 ответ

Решение

Если вы просто хотите почувствовать себя встроенным редактором. Притворяться.

  • Сохранить границы формы нет. Так что это будет выглядеть как обычный текст.
  • При наведении выделите фон поля.
  • На фокусе показать границу (путем добавления класса или изменения встроенных стилей).
  • На Blur снова скрываются границы.

Вам не нужны призрачные скрытые поля. И большинство вещей это CSS.

Используйте jquery, чтобы минимизировать код JavaScript.:-)

Другие вопросы по тегам