HTML, выходящий из представления Rails 3 - PullRequest
11 голосов
/ 26 августа 2010

Я использую Rails 3. Я хочу отобразить сгенерированный фрагмент HTML внутри шаблона erb

<%= "<div>Foo Bar</div>" %>

Rails кодирует теги div.

Если я прав в Rails 2 <%=h, это приводит к выходу html. Кажется, это было изменено в Rails 3. Как вставить фрагмент HTML без кодировки в Rails 3?

С уважением, Алексей.

1 Ответ

19 голосов
/ 26 августа 2010

Я предполагаю, что под кодировкой вы подразумеваете html-выход:

Чтобы создать необработанный html в Rails 3, вы можете использовать три различных подхода.

  1. , которые вы можете использоватьraw помощник для вывода необработанного HTML

    <% some_string = "<div>Hello World!</div>" %>
    <%= some_string %>
    <!-- outputs: &lt;div&gt;Hello Worlds!&lt;/div&gt; -->
    <%=raw some_string %>
    <!-- outputs: <div>Hello Worlds!</div> -->
    

    дополнительная информация: ActionView :: Helpers :: OutputSafetyHelper # raw

  2. Вы можетепометьте строку как html_safe

    <% some_string = "<div>Hello World!</div>".html_safe %>
    <%= some_string %>
    <!-- outputs: <div>Hello World!</div> -->
    

    дополнительную информацию: String # html_safe и ActiveSupport :: SafeBuffer # new

  3. Вы можете санировать свой вывод с помощью sanitize

    <%=sanitize "<div>Hello World!</div>", tags: %w( div ) %>
    

    больше информации: ActionView :: Helpers :: SanitizeHelper # sanitze

Дополнительная информация:

...