2011-10-17 5 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의 일부라고 생각하는 문자를 이스케이프 처리하지 않으므로 등호와 물음표와 같은 기호는 이스케이프되지 않습니다.

두 번째 방법은 이스케이프 기능으로 하여금 URL 유효 문자를 이스케이프하도록 지시합니다. 따라서 더 나은 인코딩 된 문자열을 얻을 수 있습니다.

그런 다음이 도움이

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

희망처럼 URL에 추가 할 수 있습니다.