一部の URL に特殊文字が含まれています。例えば:
http://blabla.com/title/?t=burası
他のページからそのページへのリンクを提供するときは、次を使用します。
URI.encode(s)
このリンクを生成します:
/title/?t=buras%C4%B1
この時点まではすべて正常ですが、ページにはエンコードされた URL を持つ別のフォームもあります。しかし、ブラウザは、ユーザーがアクセスして URL を に変換すると、エンコードされた URL をデコードする傾向があり/title/?t=buras%C4%B1
ます/title/?t=burası
。ユーザーが「burası」ページのフォームから何かを送信しようとすると、sinatra がエラーを出すため、問題はここから始まります。
ERROR URI::InvalidURIError: bad URI(is not URI?): http://localhost:3000/title/?t=burası
HTTP リクエストの「referrer」文字列が原因だと思いますが、ブラウザが文字列を自動的にデコードする傾向がある限り、回避策は見つかりませんでした。