Попробуйте:
+ "?direction=desc".html_safe
Edit:
Так как вы используете рельсы 2.3.5, попробуйте это:
def search_sort(name, sort_by, order = 'asc')
link_to(name, url_for(:overwrite_params => { :order_by => sort_by + "?direction=desc" :page => nil }, :escape => false), :class => 'selected save_pushstate')
...
Обратите внимание на ": escape => false" в url_for.
Edit2:
Прочитав это:
http://www.ruby -forum.com / тема / 80381
В частности, этот отрывок:
Я думаю, что именно здесь возникает путаница
возникающие. Есть два разных вида
бежать дальше.
Похоже, вы говорите
кодировка URL, которая использует "% xx" для
представляют специальные символы.
Однако функция html_escape делает
что-то совершенно другое. Это
берет строку и превращает '&' в
'&' и '<' в '<' и т. д., так
что он может войти в HTML, не будучи
интерпретируется как буквальные '&' s и '<' s. </p>
Экранирование специальных символов в URL
использование схемы «% xx» обязательно,
в противном случае они не являются действительными URL.
Я понял, что «экранирование», которое вы видите, - это кодирование URL, и оно не должно влиять на ваш запрос / сортировку и т. Д. Вы можете проверить это, взяв закодированный URL и напечатав его в браузере.
: escape => false отключить экранирование html, что означает, что опасные символы преобразуются в коды отображения, такие как «&» в «&» и «<» в «<» и т. Д., </p>
А "?" в вашем приложении должно быть "&":
+ "&direction=desc"
Надеюсь, это поможет. =)