Подтвердить что ты не робот

Отключить HTML-экранирование в шаблонах erb

В приложении Rails 3 у меня есть класс домена, в котором один атрибут хранит чистый HTML-контент (это приложение для блога, класс домена - Post).

В шаблонах ERB мне нужно отобразить содержимое атрибута по мере его форматирования с использованием тегов HTML. Но Rails избегает всех HTML-тегов! Как я могу отключить это поведение для этого атрибута класса?

Пример:

somePost = Post.new
somePost.content = "<strong> Hi, i'm here! </strong>"

В шаблоне erb:

<%= somePost.content %>

Сгенерированный HTML:

&lt;strong&gt; Hi, i'm here! &lt;/strong&gt;
4b9b3361

Ответ 1

Попробуйте использовать raw(somePost.content). Альтернативно, somePost.content.html_safe.

Ответ 2

Используйте raw(string), как описанный в примечаниях к выпуску.

7.4.3 Другие изменения

Вам больше не нужно вызывать h (string) для выхода из HTML-вывода, он включен по умолчанию во всех шаблонах представлений. Если вы хотите создать неизолированную строку, вызовите raw (string).

В принципе, где вы делали

<%=h @model.attr %>

прежде чем вы сможете использовать

<%= @model.attr %>

и когда вы это сделали, прежде чем вы сможете теперь использовать

<%=raw @model.attr %>

Ответ 3

Использование двойного равенства означает, что результат не экранирован...

<%== somePost.content %>

Увидите этот SO-вопрос об этом - Что делает <% ==% > сделать в rails erb?