хранить строку с сущностями в переменной rails - PullRequest
0 голосов
/ 17 декабря 2010

Эй, ребята, когда я сохраняю эту строку:

http://61.147.96.19/f4v/41/53283141.h264_2.f4v?10000&key=d7d7488b5dd4a35aac3e784cf4acb1a174ddc7&playtype=1&tk=2038443745&brt=3&id=tudou&itemid=30165756&fi=53283141&sz=19354294

в переменной @longurl

и использую ее в файле erb

<%= @longurl %>

Это нене работает, когда я проверяю исходный файл в браузере:

http://61.147.96.19/f4v/41/53283141.h264_2.f4v?10000&amp;key=d7d7488b5dd4a35aac3e784cf4acb1a174ddc7&amp;amp;playtype=1&amp;amp;tk=2038443745&amp;amp;brt=3&amp;amp;id=tudou&amp;amp;itemid=30165756&amp;amp;fi=53283141&amp;amp;sz=19354294

и сравниваю разницу, он добавляет amp; после каждого &, и я не знаю, как этого избежать.

Кстати, похоже, @url занято рельсами по умолчанию, я ничего не могу сохранить в переменной. Может кто-нибудь сказать мне, почему?

Спасибо

Ответы [ 4 ]

1 голос
/ 17 декабря 2010

До Rails 3 вам приходилось кодировать так, чтобы убедиться, что все закодировано в HTML:

<%= h @longurl %>

Метод h будет HTML кодировать вашу строку.Теперь все по умолчанию закодировано в HTML.Если вы не хотите, чтобы Rails делал это для вас, у нас теперь есть метод raw, подобный следующему:

<%= raw @longurl %>

Подробнее о методе raw можно узнать здесь: http://api.rubyonrails.org/classes/ActionView/Helpers/RawOutputHelper.html#method-i-raw

или читайте об этом изменении в заметках о выпуске Rails 3 http://edgeguides.rubyonrails.org/3_0_release_notes.html#other-changes

1 голос
/ 17 декабря 2010

Если вы используете Rails 3, попробуйте <%= @longurl.html_safe %>.

1 голос
/ 17 декабря 2010

Вы действительно хотите & Прочитайте почему здесь: http://htmlhelp.com/tools/validator/problems.html

Он «ломает» метод любым другим способом или просто потому, что он выглядит иначе?

Если @url используется Rails, используйте другую переменную. Это не должно быть прерывателем сделки.

1 голос
/ 17 декабря 2010

Вы можете использовать CGI::unescape для декодирования строки в кодировке URL.

<%= CGI::unescape(@longurl) %>

Для сущностей HTML используйте CGI::unescapeHTML:

<%= CGI::unescapeHTML(@longurl) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...