Отключить экранирование 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-код генерируется экранируется:
<strong> Hi, i'm here! </strong>
3 ответов
использовать 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?