Rails 3: как изменить поведение по умолчанию ERB "<% =", чтобы я мог внедрить HTML? - PullRequest
0 голосов
/ 19 января 2011

Мой вопрос касается этого , но я пытаюсь изменить поведение Rails 3 по умолчанию на "

В моем сценарии у меня есть старый плагин Rails 2, который генерирует HTML. Мой взгляд тогда должен будет вставить этот HTML в страницу.

Когда этот плагин создает HTML-код, который хранится в переменной html_to_show:

<p class="notice"><span></span>Sorry about this, but we have a problem...</p><p class="error"><span></span>Cannot go to next step</p>

и в представлении я пытаюсь показать содержимое html_to_show следующим образом:

<%= html_to_show %>

... что я получаю в своем браузере так:

&lt;p class="notice"&gt;&lt;span&gt;&lt;/span&gt;Sorry about this, but we have a problem...&lt;/p&gt;&lt;p class="error"&gt;&lt;span&gt;&lt;/span&gt;Cannot go to next step&lt;/p&gt;

Как я могу заставить Rails 3 вводить содержимое html_to_show в точности так, как оно есть, без какой-либо очистки?

Ответы [ 2 ]

7 голосов
/ 19 января 2011

Краткий ответ:

<%= html_to_show.html_safe %>

Длинный ответ:

Rails избегает всех html для защиты от XSS-атак.Добавление .html_safe предотвращает побег.

3 голосов
/ 19 января 2011
<%= raw html_to_show %>

Это должно сделать это.

...