Rails: как избежать изменения пробелов и других специальных символов в URL - PullRequest
0 голосов
/ 12 ноября 2010

У меня возникли проблемы с такими символами, как пробелы, знаки плюс, двойные кавычки и акцентированные латинские символы в рельсах при добавлении их в URL в качестве параметров. Они всегда преобразуются в числа, которым предшествует%, и это доставляет нам немало хлопот, поскольку португальский язык использует множество этих символов.

Все отлично работает, когда вы вводите символ вручную в URL, но как только rails превратит его в ссылку, он заменит его.

Есть ли способ избежать этого?

Вот пример. Вместо

url?q=transgênico

получаем

url?q=transg%C3%AAnico

Это полностью нарушает наш поиск и общение с другими веб-сайтами через параметры - что прекрасно работает при вводе специальных символов вручную.

Должен признать, что я не искал об этом, так как английский не мой родной язык, и я понятия не имею, что искать ... Все мои попытки не дали результатов, но я, вероятно, использовал плохие термины.

Использование Rails 2.3.8.

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 12 ноября 2010

Полагаю, вы должны закодировать эти символы, потому что они недопустимы в URL: Унифицированные указатели ресурсов (URL) Spec и stackoverflow

0 голосов
/ 13 ноября 2010

Модит прав. Вы можете преобразовать эти URL обратно в «красивую» форму, прежде чем использовать ее в качестве условий поиска:

require 'cgi'
CGI.unescape 'url?q=transg%C3%AAnico'

производит:

"url?q=transgênico"
0 голосов
/ 12 ноября 2010

Я бы попробовал установить флаг :escape => false в link_to и т.п.Если это не поможет, вам придется обезьяна заплатить actionpack/lib/action_view/helpers/url_helper.rb, вероятно.

...