routing: Unescape urls

Hello All,

How to make rails unescape incoming urls? I want to use russian chars in routes, like: URI.escape("/Карта--:title--:id"), :controller => "cities", :action => "show" It seems to works (page loads) but all links on page looks like this: http://localhost/%25D0%259A%25D0%25B0%25D1%2580%25D1%2582%25D0%25B0--Киев--30295?page=4

Rails double escapes url?

Also I tried url_for(.... :escape => false), it doesn't help.

Thanks in advance, Eduard

SOLVED: double escape fix

Much simpler: ActionController::Routing::Segment::RESERVED_PCHAR=':@&=+$,;%'

Ticket / Patch:


to work properly you need to change other constants too. Add this at top of your routes.rb:

ActionController::Routing::Segment.class_eval(<<-FIX, __FILE__, __LINE__+1)   RESERVED_PCHAR=':@&=+$,;%'   SAFE_PCHAR = "\#{URI::REGEXP::PATTERN::UNRESERVED}\# {RESERVED_PCHAR}"   UNSAFE_PCHAR ="[^\#{SAFE_PCHAR}]", false, 'N').freeze FIX