page_url
そのため、Rails 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')
、それはです。)