Also ich versuche, eine Rails-URL-Helfer (page_url
) zu verwenden, um URLs zu erstellen, die Sonderzeichen einschließlich Et-Zeichen enthalten. Die meisten Fälle funktionieren wie Sie es erwarten würde:Rails URL-Helper, der nicht für kaufmännisches Und-Zeichen
(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"
Aber aus irgendeinem seltsamen Grund, Et-Zeichen sind nicht entgangen:
(rdb:1) page_url('foo_&_bar', :host => 'host')
"http://host/pages/foo_&_bar"
Und wenn ich sie vor-entkommen, sie beschädigt werden:
(rdb:1) page_url('foo_%26_bar', :host => 'host')
"http://host/pages/foo_%2526_bar"
CGI::escape
, auf der anderen Seite, entgeht sie fein:
(rdb:1) CGI::escape('foo_&_bar')
"foo_%26_bar"
Was ist los, und wie kann ich das umgehen? (Mit etwas schöner als , das ist.)
Hmmm .. Ich kann nicht wirklich einen Rails-Helfer namens page_url finden (sah auf der Apidock-Website) - bist du sicher, dass das der richtige Methodenname ist? Meinst du stattdessen url_for? –
Ich habe einen ActiveRecord namens "page", der _url Helfer dafür wird automatisch erstellt. – jpatokal
Ah - richtig. Das ist in deiner Beschreibung nicht durchgekommen :) –