2

Я использую драгоценные камни: friendly_id, babosa.Ruby on Rails friendly_id, драгоценные камни babosa, проблемы с транслитерацией

Модель product.rb:

class Product < ActiveRecord::Base 
    extend FriendlyId 
    friendly_id :name, use: [:slugged, :finders] 
    has_many :tags 

    def normalize_friendly_id(input) 
    input.to_s.to_slug.normalize(transliterations: :russian).to_s 
    end 

end 

Я начал сonsole, генерировать слизней для существующих продуктов:

Product.find_each(&:save) 

Проверка последнего пункта:

Product.last 

#<Product id: 4972, name: "ВА 47-63, 2P 2А (C) EKF", created_at: "2016-01-27 11:32:39", updated_at: "2016-01-27 11:32:39", slug: 04b4aa2d-2bb9-46f9-8d49-cbb9d0c3f872"> 

Но транслитерации неправильно. Я стараюсь делать то же самое в консоли:

"ВА 47-63, 2P 2А (C) EKF".to_s.to_slug.normalize(transliterations: :russian).to_s 
=> "va-47-63-2p-2a-c-ekf" 

Теперь его обычный результат. Я не понимаю, почему это так.

Точно так же транслитерация для тегов, она получила адекватную.

Модель tag.rb:

class Tag < ActiveRecord::Base 
    extend FriendlyId 
    friendly_id :name, use: [:slugged, :finders] 
    belongs_to :product 

    def normalize_friendly_id(input) 
    input.to_s.to_slug.normalize(transliterations: :russian).to_s 
    end 
end 
+0

Что делать вы говорите, что «транслитерация ошибочна»? Какое значение имеет «вход»? –

ответ

0

Вы можете это исправить, заменив функцию на модели product.rb:

"input.to_s.to_slug.normalize(transliterations: :russian).to_s" -> 
"input.to_slug.normalize! :transliterations => [:russian]" 

на моей модели следует:

def normalize_friendly_id(text) 
    text.to_slug.normalize! :transliterations => [:vietnamese] 
end