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

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

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

пример:

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;

3 ответов


попробуйте использовать raw(somePost.content). Кроме того, somePost.content.html_safe.


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

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

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

в основном, где вы сделали

<%=h @model.attr %>

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

<%= @model.attr %>

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

<%=raw @model.attr %>

использование double equals означает, что результат не экранируется...

<%== somePost.content %>

см. этот так вопрос об этом -что делает в rails erb?