ruby-on-rails - FriendlyID韩国蛞蝓

标签 ruby-on-rails friendly-id

当我添加标题为韩语的文章时,例如:신품
FriendlyID gem 创建空白 slug 和 url 就像 /8 ......所以这是身份证。看这个链接:http://www.srecipe.kr.com/articles/8
其他语言有效。

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

最佳答案

像所有这些固定链接解决方案一样,友好 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而不仅仅是参数化。如果你把韩文字母变成音译部分,你就接近黄金了。

关于ruby-on-rails - FriendlyID韩国蛞蝓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16855883/

相关文章:

javascript - 在 rails 中从 Ajax 渲染部分表单

ruby-on-rails - 必须将捆绑执行添加到 rake db :migrate

html - 如何使用 Rails Nokogiri gem 提取 HTML 中的数据属性?

ruby-on-rails - Friendly_ID 的范围有历史记录吗?

ruby-on-rails - 了解 Rails 模型中的 slug_candidates 方法

ruby-on-rails - Friendly_id 在记录更新时更改 slug

ruby-on-rails - 更改生成的唯一的标题名称的friendly-id

ruby-on-rails - Friendly_id为Rails中的多个对象创建重复的slugs

ruby-on-rails - ApplicationController 未挽救 Pundit 未授权错误

ruby-on-rails - 你如何在 Heroku 上运行 rspec 和 cucumber ?