Почему link_to url-кодирует только несколько символов? - PullRequest
0 голосов
/ 23 декабря 2010

Согласно спецификации должно быть закодировано около 25 символов в URL:

http://en.wikipedia.org/wiki/Percent-encoding

Оказывается, в Rails 3 кодируются только несколько символов ([] &?), А остальные нетронуты (/).

Поэтому, когда я использую что-то вроде этого:

test_param = "test/a?bc"
link_to "Test link", :test_param => test_param

URL не работает (ошибка Route not found). Это потому, что в то время как знак вопроса был закодирован в процентах, слеш не был. И это нарушает URL.

Теперь мне нужно работать с параметрами, включая косую черту. Как заставить правильную кодировку URL для метода link_to? Может быть, использовать явное кодирование (CGI.encode)? Это правильное решение?

1 Ответ

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

Я думаю, что гораздо лучше явно кодировать строку (другой вариант - переопределить реализацию link_to, но это потенциально может быть очень плохо, потому что другие гемы / Rails могут зависеть от того, как он себя ведет, как определено ).

Кроме того, поскольку параметр, который есть в вашем приложении, потенциально может содержать прямые косые черты, лучше об этом прямо заявить, чтобы через несколько месяцев вы все еще знали, почему вы явно кодируете! (лучшая читаемость кода)

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