2011-10-17 8 views
2

ユーザーがアーティスト、曲、アルバムを検索して検索をクリックすると、検索結果が表示されます。個々の検索用語はクリック可能に設定されます。つまり、それぞれ独自のパス(またはルート)を使用してリンクを生成します。Rails 3.1:ピリオド(。)のUrlEncode問題

私が問題になっているのは、アーティスト、曲、またはアルバム名(ピリオド(。)など)の中にランダムな奇妙な文字が表示されていることです。とにかくこれらをエンコードするURLはありますか?最初のものはエンコードでしょう

"[email protected]%5E[]/=hi?qqq=123" 

秒にエンコードします

<% artists[0..5].each do |art| %> 
         <li><span><strong><%= link_to "#{art}", artist_path(CGI::escape(art)) %></strong></span></li> 
       <% end %> 

答えて

2


はあなたが"[email protected]^[]/=hi?qqq=123"

encoded = URI.escape str_to_be_encoded 

encoded = URI.escape(str_to_be_encoded, Regexp.new("[^#{URI::PATTERN::UNRESERVED.gsub('.','')}]")) 

と呼ばれるアルバム名を持っていると仮定します。ここでは

は私の現在のコードです〜

"slash%40%5E%5B%5D%2F%3Dhi%3Fqqq%3D123" 

ほとんどのURLエンコード方法は、値URLの一部と考えられる文字をエスケープしないため、等号や疑問符などの記号はエスケープされません。

第2の方法では、エスケープ機能にもURL有効文字をエスケープするよう指示しています。だからあなたはより良いコード化された文字列を得る。

その後、

"http://localhost:3000/albums/1-#{encoded}" 

・ホープ、このことができますようにあなたのURLに付加することができます。