5

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

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

其他语言工作。

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

4

2 回答 2

8

与所有这些永久链接解决方案一样,友好 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 提供了一种通过该方法将非 ASCII 字符串更改为近似值的transliterate方法。

# 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而不仅仅是参数化。如果你把韩文字母变成音译部分,你就接近黄金了。

于 2013-05-31T13:39:58.463 回答
2

还没有尝试过这些,但我要:

当我尝试过它们时,我会报告。

于 2014-04-04T17:48:52.330 回答