Pour obtenir la documentation la plus complète et la plus conviviale, consultez le Guide FriendlyId.
FriendlyId est le "bulldozer de l'armée suisse" des plugins de slugging et de permalien pour Active Record. Il vous permet de créer de jolies URL et de travailler avec des chaînes conviviales comme s'il s'agissait d'identifiants numériques.
Avec FriendlyId, il est facile de faire en sorte que votre application utilise des URL telles que :
https://example.com/states/washington
au lieu de:
https://example.com/states/4323454
Posez des questions sur Stack Overflow en utilisant la balise "friendly-id", et pour les bugs, consultez la section bugs
FriendlyId offre de nombreuses fonctionnalités avancées, notamment :
Ajoutez cette ligne au Gemfile de votre application :
gem 'friendly_id' , '~> 5.5.0'
Remarque : Vous DEVEZ utiliser la version 5.0.0 ou supérieure pour Rails 4.0+.
Et puis exécutez :
bundle install
Ajoutez une colonne slug
à la table souhaitée (par exemple Users
)
rails g migration AddSlugToUsers slug:uniq
Générez le fichier de configuration convivial et une nouvelle migration
rails generate friendly_id
Remarque : Vous pouvez supprimer la migration CreateFriendlyIdSlugs
si vous n'utilisez pas la fonctionnalité d'historique des slugs. (En savoir plus)
Exécutez les scripts de migration
rails db:migrate
Modifiez le fichier app/models/user.rb
comme suit :
class User < ApplicationRecord
extend FriendlyId
friendly_id :name , use : :slugged
end
Editez le fichier app/controllers/users_controller.rb
et remplacez User.find
par User.friendly.find
class UserController < ApplicationController
def show
@user = User . friendly . find ( params [ :id ] )
end
end
Désormais, lorsque vous créez un nouvel utilisateur comme suit :
User . create! name : "Joe Schmoe"
Vous pouvez ensuite accéder à la page d'affichage des utilisateurs en utilisant l'URL http://localhost:3000/users/joe-schmoe.
Si vous ajoutez FriendlyId à une application existante et que vous devez générer des slugs pour les utilisateurs existants, faites-le depuis la console, le programme d'exécution ou ajoutez une tâche Rake :
User . find_each ( & :save )
:allow_nil
Vous pouvez transmettre allow_nil: true
à la méthode friendly.find()
si vous souhaitez éviter de déclencher ActiveRecord::RecordNotFound
et accepter nil
.
MyModel . friendly . find ( "bad-slug" ) # where bad-slug is not a valid slug
MyModel . friendly . find ( 123 ) # where 123 is not a valid primary key ID
MyModel . friendly . find ( nil ) # maybe you have a variable/param that's potentially nil
#=> raise ActiveRecord::RecordNotFound
MyModel . friendly . find ( "bad-slug" , allow_nil : true )
MyModel . friendly . find ( 123 , allow_nil : true )
MyModel . friendly . find ( nil , allow_nil : true )
#=> nil
Veuillez les signaler sur le système de suivi des problèmes Github pour ce projet.
Si vous avez un bug à signaler, veuillez inclure les informations suivantes :
Si vous en êtes capable, cela est encore plus utile si vous pouvez créer FriendlyId sur Github et ajouter un test qui reproduit l'erreur que vous rencontrez.
Pour plus d'inspiration sur la façon de signaler des bogues, veuillez consulter cet article.
FriendlyId a été créé à l'origine par Norman Clarke et Adrian Mugnolo, avec l'aide significative au début de sa vie d'Emilio Tagua. Il est désormais entretenu par Norman Clarke et Philip Arndt.
Nous sommes profondément reconnaissants pour les généreuses contributions de nombreux bénévoles au fil des années.
Copyright (c) 2008-2020 Norman Clarke et contributeurs, publié sous licence MIT.
L'autorisation est accordée par la présente, gratuitement, à toute personne obtenant une copie de ce logiciel et des fichiers de documentation associés (le « Logiciel »), d'utiliser le Logiciel sans restriction, y compris, sans limitation, les droits d'utilisation, de copie, de modification, de fusion. , publier, distribuer, accorder des sous-licences et/ou vendre des copies du Logiciel, et permettre aux personnes à qui le Logiciel est fourni de le faire, sous réserve des conditions suivantes :
L'avis de droit d'auteur ci-dessus et cet avis d'autorisation doivent être inclus dans toutes les copies ou parties substantielles du logiciel.
LE LOGICIEL EST FOURNI « EN L'ÉTAT », SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS MAIS SANS LIMITATION LES GARANTIES DE QUALITÉ MARCHANDE, D'ADAPTATION À UN USAGE PARTICULIER ET DE NON-VIOLATION. EN AUCUN CAS LES AUTEURS OU LES TITULAIRES DES DROITS D'AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DOMMAGES OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS UNE ACTION CONTRACTUELLE, DÉLIT OU AUTRE, DÉCOULANT DE, DE OU EN RELATION AVEC LE LOGICIEL OU L'UTILISATION OU D'AUTRES TRANSACTIONS DANS LE LOGICIEL.