📅  最后修改于: 2023-12-03 14:41:22.838000             🧑  作者: Mango
friendly_id
是一个流行的 Ruby gem,用于为 ActiveRecord 模型添加优雅的 URL。它提供了一种简单的方式来为模型的 slug 字段生成唯一的 URL。
多列 s 是对 friendly_id 的一个扩展,它允许我们创建一个由多个列组成的唯一 URL,而不仅仅是一个 slug 字段。
在 Gemfile 中添加以下行:
gem 'friendly_id', '~> 5.0'
然后执行 bundle install
命令来安装 gem。
在模型中添加 friendly_id
作为 slug 字段的代理字段。例如,我们要生成一个由 title 和 year 组成的唯一 URL:
class Movie < ApplicationRecord
extend FriendlyId
friendly_id :slug_candidates, use: :slugged
def slug_candidates
[
[:title, :year],
[:title, :year, :id]
]
end
end
迁移数据库,并为 slug 字段添加索引:
rails g migration AddSlugToMovies slug:uniq
class AddSlugToMovies < ActiveRecord::Migration[6.1]
def change
add_column :movies, :slug, :string
add_index :movies, :slug, unique: true
end
end
生成 slug:
Movie.find_each(&:save)
在控制器中使用 friendly_id 创建 URL:
def show
@movie = Movie.friendly.find(params[:id])
end
friendly_id
是一个方便而强大的 gem,可以帮助我们生成唯一且友好的 URL,而不仅仅是简单的 slug 字段。通过与多列 s 扩展的结合,我们可以使用多个模型字段来生成 URL,提供更加灵活和具有辨识度的链接。
使用 friendly_id
可以提高用户体验、优化 SEO,同时还提供了一些有用的特性,如历史纪录和版本控制。因此,如果你需要为 ActiveRecord 模型添加友好的 URL,不妨考虑使用 gem friendly_id 与多列 s。