Как сделать так, чтобы html код в теге erb не сбежал - PullRequest
1 голос
/ 16 июня 2011

У меня есть простой код erb в одном из моих представлений в проекте rails.

<%= comment.body %>

Я бы хотел, чтобы теги html в файле comment.body были сохранены, поскольку они имеют информацию о форматировании.Я проверил, что текст сохраняется в базе данных должным образом, как

<b>hello</b>

Однако на странице получается <b>hello</b>, а не привет какЯ жду.

Как это могло быть?Я не использую <%= h для экранирования HTML-кода.

Как сделать так, чтобы оно не сбежало?Я использую рельсы 3. Это имеет значение?

Ответы [ 2 ]

4 голосов
/ 16 июня 2011

Вы также можете использовать sanitize.

<%= sanitize(comment.body) %>

sanitize оставит HTML-код, но избежит JavaScript.

2 голосов
/ 16 июня 2011

Rails 3 теперь автоматически экранирует ваш вывод.

Чтобы удалить текст и использовать фактические теги, используйте raw(...):

<%= raw(comment.body) %>

Однако будьте осторожны с этимпозволит любые теги, в том числе скрипты (потенциально вредоносные).Более безопасный вариант может заключаться в том, чтобы пользователи использовали текст в формате уценки или что-то подобное, а не разрешали необработанные теги HTML.

...