Итак, я пытаюсь использовать помощник URL Rails ( page_url
) для создания URL-адресов, содержащих специальные символы, включая амперсанды. В большинстве случаев они работают так, как вы ожидаете:
(rdb:1) page_url('foo', :host => 'host')
"http://host/pages/foo"
(rdb:1) page_url('foo_%_bar', :host => 'host')
"http://host/pages/foo_%25_bar"
Но по какой-то странной причине амперсанды не экранируются:
(rdb:1) page_url('foo_&_bar', :host => 'host')
"http://host/pages/foo_&_bar"
И если я их экранирую заранее, они быть поврежденным:
(rdb:1) page_url('foo_%26_bar', :host => 'host')
"http://host/pages/foo_%2526_bar"
CGI :: escape
, с другой стороны, отлично ускользает от них:
(rdb:1) CGI::escape('foo_&_bar')
"foo_%26_bar"
Что происходит и как мне обойти это? (С помощью чего-то более приятного, чем gsub ('& ','% 26 ')
, то есть. )