현재 CMS를 개발 중이며 URL에 특수 문자를 좋은 방법으로 인코딩하려고합니다. Rack :: Utils.escape을 사용하고 싶지 않습니다.URL을 인코딩하는 가장 좋은 방법은 무엇입니까?
멋진 보석이 있습니까?
안부
이현재 CMS를 개발 중이며 URL에 특수 문자를 좋은 방법으로 인코딩하려고합니다. Rack :: Utils.escape을 사용하고 싶지 않습니다.URL을 인코딩하는 가장 좋은 방법은 무엇입니까?
멋진 보석이 있습니까?
안부
이봐, 그것은 심지어 레일없이 사용할 수 있습니다 볼 수 있지만 일부 포함되어 있습니다 (레일을 사용하여) 사용하기가 더 쉬워졌습니다.
루비의 CGI 라이브러리는 당신이 필요로하는 무엇을 수행해야합니다,
url_encoded_string = CGI::escape("'Stop!' said Fred")
# => "%27Stop%21%27+said+Fred"
가 stringex 보석 here에서 http://ruby-doc.org/core/classes/CGI.html
글쎄, 나는 일반적으로 String.to_slug
이라는 편리한 맞춤형 방법을 사용합니다. 유용하다고 생각하길 바랍니다.
이 /lib/to_slug.rb를 호출하여 하나의 초기화 프로그램에 포함 시키거나 URL을 생성하는 모델에만 포함 시키십시오. 설명하면서
String.class_eval do
#converts accented letters into ascii equivalents (eg. ñ becomes n)
def normalize
#this version is in the forums but didn't work for me
#chars.normalize(:kd).gsub!(/[^\x00-\x7F]/n,'').to_s
mb_chars.normalize(:d).gsub(/[^\x00-\x7F]/n,'').to_s
end
#returns an array of strings containing the words on a string
def words
gsub(/\W/, ' ').split
end
#convert into a nice url-ish string
def to_slug(separator='-')
strip.downcase.normalize.words.join(separator)
end
end
왜'랙 :: Utils.escape'은 ... 사람들이 더 나은 제안을 도움이 될 수 있습니다 그것은 추한 URL을 생성 – ceejayoz
받아 들일 수없는 것입니다. – brainfck
아래의 귀하의 의견과 귀하가 수락 한 답변을 바탕으로 귀하의 질문에 대한 오해의 소지가 있습니다. 특수 문자를 "인코딩"하지 않고 일반 ASCII로 "변환"합니다. – ScottJ