Есть ли способ использовать кодовые символы ASCII в помощниках по рельсам? - PullRequest
5 голосов
/ 23 ноября 2011

Это:

<%= link_to "My Trademark &153;", trade_mark_path %>

Формирует

«Моя торговая марка & 153;»

Когда мне нужно, чтобы это было на самом деле: Моя торговая марка ™

Есть ли возможность использовать коды ASCII в помощнике по URL? Я всегда могу прибегнуть к генерации ссылки вручную, но это ужасно.

Ответы [ 3 ]

4 голосов
/ 25 ноября 2011

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

Если вы не можете сделать это из-за ограниченийвашей платформе или текстовом редакторе используйте строковый литерал escape \u, а не HTML-кодировку, чтобы получить нужный вам символ:

<%= link_to "My Trademark\u2122", trade_mark_path %>

Символом торговой марки является U + 2122 или десятичное 8482.153 - это байтовая кодировка в кодовой странице Windows 1252 для Западной Европы, поэтому ссылка на символ &#153; не должна работать.На практике это происходит в не XML-диалектах HTML из-за хитрого устаревшего поведения браузера (стандартизированного в HTML5), но на него не следует полагаться.

3 голосов
/ 28 февраля 2012

Вы можете использовать метод raw и написать:

<%= link_to raw("My Trademark &153;"), trade_mark_path %>

http://apidock.com/rails/ActionView/Helpers/OutputSafetyHelper/raw

3 голосов
/ 23 ноября 2011

Самый простой ответ - не использовать HTML-сущности, а вместо этого использовать файлы исходного кода Unicode с буквальными символами Unicode, например, фактически поставить:

<%= link_to "My Trademark™", trade_mark_path %>

в вашем представлении.Однако, если необходимо, вы можете просто сделать:

<%= link_to("My Trademark&trade;", trade_mark_path).html_safe %>

, чтобы отключить автоматическое экранирование Rails от HTML.

Обратите внимание, что использование десятичных сущностей &#...; для значений ASCII 128-255это плохая идея, так как они обычно полагаются на нестандартные кодовые страницы, если вы не уверены , что отправляете правильную кодировку для вашего HTML, которая соответствует.Как вы можете видеть , значение Unicode для символа торговой марки на самом деле &#8482;.

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