Podobnie jak wszystkie te rozwiązania dotyczące permalink, przyjazny identyfikator wykorzystuje metodę parameterize
do konwersji ciągu znaków na bezpieczny ciąg znaków URL. tak:
require 'active_support/all'
puts "Oh Hai There".parameterize
=> oh-hai-there
Problem pojawia się w przypadku korzystania z innych niż ciągi ASCII, który parametryzacji zastępuje z pustym ciągiem, przyczyną problemu:
# encoding: UTF-8
require 'active_support/all'
puts "신품".parameterize
=>
ActiveSupport zapewnia sposób zmienić niż ciągi ASCII przybliżone przybliżenie za pomocą metody transliterate
.
# encoding: UTF-8
require 'active_support/all'
include ActiveSupport::Inflector
puts transliterate("Ærøskøbing")
=> AEroskobing
Ale jeśli nie zna się na postaci, to domyślnie jest?
# encoding: UTF-8
require 'active_support/all'
include ActiveSupport::Inflector
puts transliterate "신품"
=> ??
Można jednak powiedzieć transliteratorowi, jak postępować z bohaterami. Więc w modelu Rails
# Store the transliterations in locales/en.yml
en:
i18n:
transliterate:
rule:
신: "abc"
품: "def"
puts transliterate "신품"
=> "abcdef"
tak, można użyć transliterate(title).parameterize
zamiast tylko parametryzacji. A jeśli dostaniesz alfabet koreański do sekcji transliteratu, będziesz blisko złota.
Odebrano odpowiedź? Nie sądzę! Zostało to oznaczone jako wyłączone i zamknięte. PROSZĘ! –