Предварительный просмотр ввода форматированной HTML-формы с помощью Rails - PullRequest
1 голос
/ 29 марта 2011

Мне нужна функция предварительного просмотра текста с HTML-тегами, а затем сохранения текста в базе данных. Я знаю, что не рекомендуется включать HTML в базу данных по соображениям безопасности XSS. Как этого добиться?

Мне нужна функция, похожая на ту, что есть в stackoverflow, где мы можем отформатировать наши исходные коды. Спасибо.

Ответы [ 2 ]

6 голосов
/ 29 марта 2011

Рекомендуемый способ:

Создайте прослушиватель событий javascript для формы на html-странице.Отправьте входные данные через ajax в ваше приложение rails , где входные данные будут обработаны (например, тем же помощником, который позже будет отображать выходные данные из базы данных).

Используйте язык разметки, например RedCloth / Textile , чтобы избежать XSS.Для ваших пользователей также проще набирать / понимать!

Запрошенный вами способ:

Создайте прослушиватель событий javascript и запишите содержимое формы / ввода в другой div.

Необходимый вам javascript зависит от того, какую библиотеку вы используете (например, Prototype или jQuery).

Пример:

Предположим, выиметь форму с текстовой областью, <textarea id="text"></textarea> и div области предварительного просмотра с <div id="preview"></div>, и вы используете прототип:

document.observe("dom:loaded", function() {
  new Form.Element.Observer('text', 0.25, 
    function () {
      $('preview').update($F('text'));
    }
  );
}

Это будет проверять текстовую область каждые 250 мс на наличие изменений и копировать ее ввод вПредварительный просмотр div.

На самом деле, вам просто нужен код внутри функции, который вызывается с document.observe (начиная с new Form.Element.Observer.... document.observe будет вызывать этот код после того, как браузер завершит сборку DOM-дерево.

1 голос
/ 29 марта 2011

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

...