内のURLのクエリ文字列だけの部分をエスケープ、私はいくつかのリンクのURLを生成するために、通常のヘルパーメソッドを使用しています(例:はRailsの3.0.11アプリでRailsの
home_url() # for the home page
search_url() # for the search page
など )
URLに追加されるクエリ文字列を作成するために使用される一連のパラメータを渡しています。例えば
search_url(:text => '123') # => http://mysite.com/search?text=123
これらのparamsの一部を少し複雑になりますし、いくつかのネストされたハッシュが、私が持っている問題は、それがW3C HTMLに対して(検証するように適切にこれをエスケープする方法です
search_url(:text => '123', :categories => {:category_1 => 1, :category_2 => 2}) # => http://mysite.com/search?text=123&categories[category_1]=1&categories[category_2]=2
例えばありますバリデーター)、特に角括弧については、 h()を使用すると、アンパサンドはエスケープされますが、角括弧で検証が失敗します。文字列全体にCGI.escapeを使うこともできますが、これはクエリーストリングの前にあるすべてのものをエンコードします。//はアドレスの先頭にあります。つまり、ブラウザーはURLを相対URLとして扱います。私は恐れている必要があります)。
私は文字列をハックして、必要なビットをエンコードし、一緒に戻すことができますが、より良い方法が必要であるように思えます。誰でも知っている?
乾杯
アダムは
にそれらをバックポートするために、ソースを掘り下げる:ルビーは( '必要はありません) 'を呼び出します。 – Reactormonk
@タス、時には読みやすくすることもあります。パラメータが渡されないときではありません。 – Yule
これはずっと前のことでしたが、バリデータ以外には影響を与えましたか?言い換えれば、_why_は大括弧で、クエリ文字列では使用できません。 – KaptajnKold