Я использую Rails 3. Я хочу отобразить сгенерированный фрагмент html внутри шаблона erb.
<%= "<div>Foo Bar</div>" %>
Rails кодирует теги div.
Если я прав, в Rails 2 <%=h вызывает экранирование html. Кажется, это было изменено в Rails 3. Как можно вставить фрагмент html без кодирования в Rails 3?
С уважением, Алексей.
Ответ 1 · рейтинг 19 · jigfox
Я предполагаю, что под кодировкой вы подразумеваете экранирование html:
Чтобы вывести необработанный html в Rails 3, вы можете использовать три разных подхода.
вы можете использовать помощник raw для вывода необработанного html
<% some_string = "<div>Hello World!</div>" %>
<%= some_string %>
<!-- outputs: <div>Hello Worlds!</div> -->
<%=raw some_string %>
<!-- outputs: <div>Hello Worlds!</div> -->
дополнительная информация: ActionView::Helpers::OutputSafetyHelper#raw
Вы можете пометить строку как html_safe
<% some_string = "<div>Hello World!</div>".html_safe %>
<%= some_string %>
<!-- outputs: <div>Hello World!</div> -->
дополнительная информация: String#html_safe и ActiveSupport::SafeBuffer#new
Вы можете очистить свой вывод с помощью sanitize
<%=sanitize "<div>Hello World!</div>", tags: %w( div ) %>
дополнительная информация: ActionView::Helpers::SanitizeHelper#sanitze
Еще немного информации: