Rails 3 не отображает HTML как разметку - PullRequest
3 голосов
/ 11 января 2011

Я отправил форму для создания отдельной строки в таблице базы данных SQL в виде записи в блоге:

<p>This is a paragraph.</p>

И результат, когда я запрашиваю его для отображения, черезActiveRecord Rails, он отображается так:

<p>This is a paragraph.</p>

и вот код, когда я просматриваю исходный код в браузере:

&lt;p&gt;This is a paragraph.&lt;/p&gt;

Как мне это решить?Или мне просто нужно конвертировать <</strong> и > с помощью Javascript?

Спасибо:)

1 Ответ

7 голосов
/ 11 января 2011

Что происходит, так это то, что строка экранируется от HTML.

Вы можете использовать html_safe, чтобы не экранировать строку при ее визуализации. Например, <%= post.paragraph.html_safe %>.

Но, конечно, это не рекомендуется , если вы разрешили форме для хранения (неограниченного) HTML в первую очередь, он может содержать, например, вредоносный JavaScript (например, для XSS). Излишне говорить, что это крайне плохая практика.

Важное примечание Прежде чем использовать html_safe в любом HTML, убедитесь, что в HTML содержится белый список разрешенных тегов HTML. Кроме того, вы можете захотеть использовать белый список даже при сохранении содержимого формы (обратите внимание, что принудительное использование белого списка при сохранении не заменяет принудительное использование белого списка при отображении содержимого!).

Возможно, вы захотите начать с этих собственных «правил» StackOverflow .

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