Rails - закрывать теги html при вводе html в форму - PullRequest
2 голосов
/ 08 марта 2012

Есть ли способ закрыть html-теги, если пользователь забудет об этом? Например. когда пользовательский ввод:

<b>small</b><i>test

Есть ли способ в Rails автоматически добавить закрывающий тег </i>, чтобы все последующие html не выделялись курсивом?

Я использовал .html_safe для интерпретации всего как html, но я бы тоже хотел прекратить <i>.

Ответы [ 3 ]

4 голосов
/ 08 марта 2012

Rails не имеет встроенных возможностей для этого, однако у вас есть несколько вариантов:

  1. Nokogiri - прост в установке практически на всех платформах (gem install nokogiri)
  2. Tidy - Второй пост содержит подробности, чтобы использовать его в Linux и Windows

Используя nokogori, вы можете просто сделать:

html = "<b>small</b><i>test"
clean = Nokogiri::HTML::DocumentFragment.parse(html).to_html
# clean = "<b>small</b><i>test</i>"
0 голосов
/ 08 марта 2012

Приличный способ сделать это - передать входные данные в синтаксический анализатор dom, а затем сделать так, чтобы этот синтаксический анализатор выводил правильный HTML.

Обратите внимание, что это не доказательство, и если пользователь делает слишком много ошибокпарсер не знает, что делать.

Я бы предложил Нокогири

0 голосов
/ 08 марта 2012

Rails не может сделать это с вами.

Вы можете использовать систему шаблонов, например, Haml или Slim, чтобы не забыть об этом.

Вы можете сделать это и в собственном редакторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...