У меня есть база данных, заполненная старыми сообщениями в блоге, которые я пытаюсь перейти на Rails. Поле тела состоит из сообщений, которые выглядят имеют формат, похожий на этот:Рендеринг безопасного html в Rails 3
Paragraph text paragraph text paragraph text and even more paragraph text. Paragraph text paragraph text paragraph text and even more paragraph text. Paragraph text paragraph text paragraph text and even more paragraph text. Paragraph text paragraph text paragraph text and even more paragraph text.
<iframe src="http://www.youtube.com?v=XXXXXXXX" width="400" height="250"></iframe>
Paragraph text paragraph text paragraph text and even more paragraph text. Paragraph text paragraph text paragraph text and even more paragraph text. Paragraph text paragraph text paragraph text and even more paragraph text. Paragraph text paragraph text paragraph text and even more paragraph text.
<ul>
<li>List item</li>
<li>List item</li>
<li>List item</li>
<li>List item</li>
</ul>
Paragraph text paragraph text paragraph text and even more paragraph text. Paragraph text paragraph text paragraph text and even more paragraph text. Paragraph text paragraph text paragraph text and even more paragraph text. Paragraph text paragraph text paragraph text and even more paragraph text.
Так что я пытаюсь сделать, это обернуть текст пункта в <p>
, но оставить другие HTML элементы в одиночку. Вот что я пытался:
simple_format (@ post.body) = это ставит <p>
вокруг все, но и загрязняет мои неупорядоченные списки с перерывами между каждым элементом списка. Кроме того, вставка iframe не будет отображаться.
сырье (@ post.body) или @ post.body.html_safe = Функция Iframe код вставки и маркированные списки показать большой, но все работает вместе, так как нет никакой замены для новых линий.
simple_format (@ post.body, {}, {: sanitize => false}) = Прохладный. Теперь я вижу все html-теги! Не работает на всех
@ post.body.gsub (/ \ г \ п? /, "<br/>
") .html_safe = Та же проблема, как с simple_format ... Я получаю разрывы строк в моем Теги элемента html block.
Любые предложения о том, как это сделать?
Внимание! Вызов 'html_safe' на unsanitized, untrusted strings * будет * оставить вас открытым для атак XSS. Если вы вызываете 'html_safe' на что-то, вы должны быть абсолютно уверены *, что эта строка не будет содержать ненадежный ввод пользователя. – Ajedi32