Rails :: 使用 FriendlyId、Globalize 和 slug_candidates 生成 slug
Rails :: Generate slugs with FriendlyId, Globalize and slug_candidates
我正在构建一个 Rails 应用程序,但在为定义了第二个语言环境的文章生成 slug 时卡住了。
对于主要语言环境(法语),它检查文章是否已经有标题,如果是的话,在末尾添加一个整数(id),但对于第二个语言环境(英语),它只是生成 slug 而不检查文章是否存在(这给了我重复的鼻涕虫)。
这是我的模型:
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
- 全球化 5.0.1
- FriendlyId 5.1.0
- FriendlyId-globalize 1.0.0.alpha2
我终于可以像这样更新 slug_candidates 方法了:
def slug_candidates
[[:title, :deduced_id]]
end
我正在构建一个 Rails 应用程序,但在为定义了第二个语言环境的文章生成 slug 时卡住了。
对于主要语言环境(法语),它检查文章是否已经有标题,如果是的话,在末尾添加一个整数(id),但对于第二个语言环境(英语),它只是生成 slug 而不检查文章是否存在(这给了我重复的鼻涕虫)。
这是我的模型:
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
- 全球化 5.0.1
- FriendlyId 5.1.0
- FriendlyId-globalize 1.0.0.alpha2
我终于可以像这样更新 slug_candidates 方法了:
def slug_candidates
[[:title, :deduced_id]]
end