Как я могу сказать Rails не кодировать специальные символы в строке? - PullRequest
2 голосов
/ 13 января 2011

У меня есть это:

"<img src='#{picture.url(:tiny)}'>"

Который выводится так:

 &lt;img src='/system/pictures/2/tiny/Womacdsf.jpg?1294942797'&gt;, &lt;img src='/system/pictures/3/tiny/Womacdsf_3017.jpg?1294942797'&gt;, &lt;img src='/system/pictures/4/tiny/Womacdsf_8012.jpg?1294942797'&gt;, … (8)

Как видите, это кодирование с использованием &lt; и &gt; вместо использования необработанных < и >.

Как я могу сказать Rails, что это не то, что я хочу?

Ответы [ 3 ]

4 голосов
/ 13 января 2011

с использованием

<%= image_tag picture.url(:tiny) %>

должно работать

для вашей проблемы вы также можете использовать это

"<img src='#{picture.url(:tiny)}'>".html_safe
2 голосов
/ 14 января 2011

У вас есть два варианта. Либо удалите строку, используя raw при печати

<% image_string = "<img src='#{picture.url(:tiny)}'>" %>
<%= raw image_string %>

Или вы можете пометить строку как html_safe

<% image_string = "<img src='#{picture.url(:tiny)}'>".html_safe %>
<%= image_string %>
2 голосов
/ 14 января 2011

Если вы используете Rails 3, защита XSS включена по умолчанию. Это означает, что HTML по умолчанию экранирован.

Там, где вы могли когда-то использовать помощник "h" для генерации экранированного HTML, вам это больше не нужно, но вместо этого вам нужно будет использовать "сырой" помощник для предотвращения экранирования.

См. http://asciicasts.com/episodes/204-xss-protection-in-rails-3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...