FriendlyID韩国slu ..

时间:2013-05-31 11:08:39

标签: ruby-on-rails friendly-id

当我添加带有标题的韩语文章时,例如:신품

FriendlyID gem创建空白slug,url就像/8 ...所以这是ID。请看这个链接:http://www.srecipe.kr.com/articles/8

其他语言有效。

如何从신품获取映射到/ this-is-url等拉丁字母的网址?

2 个答案:

答案 0 :(得分:7)

与所有这些永久链接解决方案一样,友好ID使用parameterize方法将字符串转换为URL安全字符串。像这样:

require 'active_support/all'
puts "Oh Hai There".parameterize
=> oh-hai-there

当您使用非ASCII字符串时会出现问题,参数化会替换为空字符串,从而导致您的问题:

# encoding: UTF-8
require 'active_support/all'
puts "신품".parameterize
=> 

ActiveSupport提供了一种通过transliterate方法将非ASCII字符串更改为近似近似值的方法。

# encoding: UTF-8
require 'active_support/all'
include ActiveSupport::Inflector

puts transliterate("Ærøskøbing")
=> AEroskobing

但是,如果它不知道一个字符,它将默认为??

# encoding: UTF-8
require 'active_support/all'
include ActiveSupport::Inflector

puts transliterate "신품"
=> ??

但是,你可以告诉音译如何处理这些角色。所以在Rails模型中

# Store the transliterations in locales/en.yml
en:
  i18n:
    transliterate:
      rule:
        신: "abc"
        품: "def"

puts transliterate "신품"
=> "abcdef"

因此,您可以使用transliterate(title).parameterize而不仅仅是参数化。如果你把韩语字母变成音译部分,你就会接近金色。

答案 1 :(得分:2)

尚未尝试过,但我要去:

我会在我尝试过的时候回复。