Rails无法参数化西里尔字符(俄语)

时间:2011-07-25 16:17:18

标签: ruby-on-rails

我们的应用程序使用参数化版本的页面名称自动生成页面URL。例如:

http://www.domainname.com/this-is-the-page-name

简单。工作正常,除非页面名称使用西里尔字符,参数大小方法返回一个空字符串:

"Пробна галерия".parameterize

我一直在网上挖掘如何处理这个问题,我发现的建议指向了音译技术。想知道是否有一种简单明了的处理方式。

2 个答案:

答案 0 :(得分:0)

尝试使用gsub:

irb> "Пробна галерия".gsub!(/\s/,'-')
  => "Пробна-галерия" 

答案 1 :(得分:0)

试试这个:

def to_slug      
  # http://stackoverflow.com/questions/1302022/best-way-to-generate-slugs-human-readable-ids-in-rails

  #strip the string
   ret = self.strip

   #replace all whitespaces and underscores to dashes
   ret.gsub!(/[\s_]+/, '-')

   #replace all non alphanumeric, non dashes with empty string
   ret.gsub! /\s*[^A-Za-z0-9А-Яа-я\-]\s*/, ''

   #convert double dashes to single
   ret.gsub! /-+/,"-"

   #strip off leading/trailing dashes
   ret.gsub! /\A[-]+|[-]+\z/,""

   ret
end