EROARE URI :: InvalidURIError: URI rău (nu este URI?) Din cauza browserelor

Am câteva caractere speciale pe urmele mele. De exemplu:

http://blabla.com/title/?t=burası

Când dau link-uri către acele pagini din alte pagini, folosesc:

URI.encode(s)

care produce acest link:

/title/?t=buras%C4%B1

În timp ce totul este normal până la acest punct, mai am o altă formă pe pagină care conține codul url. Dar browserele tind să decodeze urlul meu codificat atunci când utilizatorii vizitează /title /? T = buras% C4% B1 și transformă url în /title /? T = burası . Problema începe aici deoarece, atunci când utilizatorul încearcă să trimită ceva din formular pe pagina "burası", sinatra dă o eroare:

Eroare URI :: InvalidURIError: URI rău (nu este URI?): http://localhost: 3000/title /? t = burası

Cred că este din cauza șirului "referrer" al cererii HTTP, dar nu am putut găsi soluții atâta timp cât browserele au tendința de a decoda automat șirul.

0
Ați putea oferi un exemplu minim de lucru? Nu reușesc să reproduc - vedeți Gist .
adăugat autor jmdeldin, sursa

1 răspunsuri

Ar trebui să codificați URI-ul în metoda FORM.

De exemplu, faceți ca acțiunea HTML FORM să arate astfel:

<form action="/title/?t=buras%C4%B1" method="post">

O rezolvă asta pentru tine?

(Editare: mulțumesc x1a4 pentru corecție - bineînțeles că ai dreptate :)

0
adăugat
Ați schimbat atributele action și method în exemplul dvs.
adăugat autor x1a4, sursa