Rails Как избежать и отобразить содержимое визуализированного представления - PullRequest
3 голосов
/ 26 октября 2010

Я пытаюсь показать файл вида рельсов в текстовой области. файл представления содержит связку HTML, от которой я хочу избавиться, чтобы он не мешал на странице html. Вот пример:

In this view we are going to display the contents of a partial
<textarea>
<%= html_escape render('partial') %>
</textarea>

, а в part.html.erb я бы

Hello this is partial.html.erb and this is a 
<textarea>textarea</textarea>  blah blah blah.

Проблема в том, что текстовое поле вpart.html нарушает текстовое поле в первом представлении, потому что оно не является html_escaped. Как мне свойство escape и отображать содержимое части внутри текстовой области?

Ответы [ 5 ]

5 голосов
/ 26 октября 2010

Вы пытались использовать

<%= CGI.escapeHTML render('partial') %>
1 голос
/ 26 октября 2010

Попробуйте render_to_string в вашем контроллере и затем используйте html_escape в результирующей строке.

0 голосов
/ 07 июня 2012

EDITED По умолчанию в Rails text_area экранирует HTML, чтобы избежать внедрения вредоносного скрипта.Используйте помощник по формам для создания <textarea>

<%= f.text_area :model_attribute %>

Примечание. Если вам нужно увидеть необработанный HTML-код в текстовой области, просто включите параметр: escape и установите значение false, чтобы отключить HTMLescaping.

<%= f.text_area :model_attribute, escape: false %>

Образец цитирования: http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-text_area_tag

При использовании этой функции я рекомендую проверить или удалить тег сценария из переданного значения, если источник не является доверенным или открыт для общего доступа..

0 голосов
/ 19 марта 2011

Hello Я вижу, это было давно, но вот что я предлагаю: ... sanitize instance.yourtext%> Я нашел помощника «sanitize» в «Гибком веб-дизайне с Ruby on Rails» С. Руби, Д. Томаса и Д. Ханссона. Надеюсь, это поможет ...

0 голосов
/ 26 октября 2010

Хорошо, я понял это. Вы в основном должны вызывать рендер дважды. Первый раз - рендеринг файла, а второй - экранирование этого отрендеренного файла. Это безобразно!

<%= render :text => render("partial") %>

Мне было бы интересно узнать, есть ли у кого-нибудь еще способы избежать частичного.html.

...