Rails ::使用FriendlyId,Globalize和slug_candidates生成slugs

时间:2016-05-28 11:36:10

标签: ruby-on-rails friendly-id globalize

我正在构建一个Rails应用程序,并且在为定义了第二个语言环境的文章生成slug时遇到困难 对于主要的语言环境(法语),它检查了一篇文章是否已经有了标题,如果是这样的话,在结尾处添加一个整数(id),但对于第二个语言环境(英语),它只是生成slug而不检查文章是否存在(这给了我重复的slu ..)。

这是我的模特

class Post < ActiveRecord::Base
  translates :title, :slug, :content, fallbacks_for_empty_translations: true 
  active_admin_translates :title, :slug, :content, fallbacks_for_empty_translations: true 

  extend FriendlyId 
  friendly_id :slug_candidates, use: [:slugged, :globalize, :finders]

  private

  def slug_candidates
    [:title, [:title, :deduced_id]] # works for main locale but not others
  end

  def deduced_id
    self.class.where(title: title).count + 1
  end
end

当文章已存在且标题相同时,如何将辅助语言环境中的ID添加到slug中?

感谢您的帮助!

我的项目

  • Rails 4.2.6
  • ActiveAdmin 1.0.0.pre2
  • Globalize 5.0.1
  • FriendlyId 5.1.0
  • FriendlyId-globalize 1.0.0.alpha2

1 个答案:

答案 0 :(得分:1)

我终于让它工作更新了slug_candidates方法,如下所示:

def slug_candidates
  [[:title, :deduced_id]]
end