2011-07-25 50 views
1

我們的應用程序使用頁面名稱的參數化版本自動生成頁面URL。例如:Rails無法參數化西里爾文字符(俄語)

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

簡單。做工精細,除了當頁面名稱使用西里爾文字符,該參數化方法返回一個空字符串:

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

我一直在網上挖瞭如何解決這個問題,而且我發現指向音譯的建議技術。想知道是否有一個簡單的方法來處理這個問題。

回答

0

嘗試使用GSUB:

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

我們沒有與西裏爾字母了大量經驗,但我寧願顯示的一個羅馬版本字符串如果可能,除非有人可以確認在地址欄中顯示西里爾字符是標準的。 其次,parameterize在清理我們的輸出字符串方面做得很好,其中gsub解決方案太簡單了。 –

+0

然後嘗試寶石[俄羅斯](https://github.com/Undev/russian) >重載的方法參數化變形器ActiveSupport(String#parameterize)。現在它是俄羅斯信件的羅馬化。 – sfate

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 
相關問題