2

我使用的是宝石:friendly_id, babosaRuby 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