我目前正在开发一个CMS,并希望以一种很好的方式对URL中的特殊字符进行编码。 我不想使用Rack :: Utils.escape。
有没有可用的酷宝石?
祝你好运
答案 0 :(得分:3)
看看stringex gem here,它甚至可以在没有rails的情况下使用,但包含一些东西以便于使用(使用rails)。
答案 1 :(得分:1)
Ruby的CGI库应该满足您的需求:
url_encoded_string = CGI::escape("'Stop!' said Fred")
# => "%27Stop%21%27+said+Fred"
答案 2 :(得分:0)
好吧,我通常使用一种名为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