Display IDs in your URLs can be terrible and wasteful for SEO. In this blog entry, I will demonstrate to you how you can utilize slugs to make your URLs more relevant to the page content. In the first place, we will utilize an implicit arrangement (superseding the to_param strategy) to change the URLs and a while later, we will utilize a gem called friendly_id to produce slugs and keep up a past filled with these slugs. So that search engines index your web pages.
For example: http://www.exaple.com/blogs/1 A http://www.exaple.com/blogs/blog-name
Qui, sto creando un campione Rotaie5 app con modello di post per illustrare come funzionerà esattamente con i graziosi URL.
rotaie g impalcatura titolo del post: stringa pubblicata: booleano
correre rotaie db:migrare
e crea alcuni post di esempio (http://localhost:3000/posts/new)
app/modelli/post.rb
def to_param titolo. parametrizza fine
All the links will be changed to pretty URLs once you add the above method to your model. Please check on index page where it lists all the posts. However, when you click on that it will show you error page.
Post.find method cannot find the record with id which we are passing in URL. We need to create slugs for the above posts in our db for that model.
Let’s add migration file for the slug
rails g migrazione AddSlugToPosts slug:string
Apri il file di migrazione sopra menzionato e aggiungi l'indice uniq a quel sulg. La lumaca deve essere unica.
class AddSlugToPosts < ActiveRecord::Migration[5.0] def change add_column :posts, :slug, :string add_index :posts, :slug, unique: true end end
correre db:migrare
Now, we have to change our show action db query to find_by instead of find method. Because we need to fetch the results based on slug.
Change our set_post method to
def set_post Post.find_by_slug(params[:id]) end
Ora funziona come previsto con gli URL carini. Cosa succede se due record hanno lo stesso URL poiché entrambi i record hanno lo stesso nome. Perché .find_by recupera sempre il primo record. Per risolvere questo problema, prima di salvare lo slug possiamo combinare l'id del record con lo slug nel modo indicato di seguito:
def add_slug “#{id}-#{title.parameterize}” end
So, it will generate like “1-blog-name”. We have a gem called friendly_gem to simply take care of all the above-mentioned scenarios.
Feel free to remove the above mentione code from the sample app because everything is managed by the gem.
Gemma Friendly_id(Rails 5)
Add the latest gem from rubygem web to the gemfile and run bundle
gemma 'friendly_id', '~> 5.1'
i binari generano friendly_id
Il comando precedente genera un file di inizializzazione e un file di migrazione.
esegui db:migrate
Crea alcuni record e modifica il nostro metodo set_post nel modo in cui è menzionato di seguito. Tutti i vecchi record devono essere rigenerati, nel caso ne abbiate qualcuno.
def set_post Post.friendly.find("Joe Schmoe".parameterize) end
Aggiornamento del titolo del post
Slug si aggiornerà automaticamente quando aggiorni l'attributo titolo. Ma non è una buona pratica aggiornare gli slug troppo frequentemente. L'applicazione potrebbe generare errori quando si fa clic su uno qualsiasi degli URL con segnalibri perché chiunque potrebbe avere vecchi segnalibri. Dobbiamo evitare che ciò accada aggiungendo il simbolo della cronologia all'opzione di utilizzo nel modello Post.
def slug_candidates [ :title, [:title, :id] ] end
slug_candidates feature was added in friendlyId 5. It allows us to tell the friendly id gem, what needs to be done in case of duplicate slugs.
The code mentioned above advises FriendlyId that it needs to utilize the slug_candidates technique to make the slug uniq. It will attempt the rundown right from the beginning to the end, so in the case above, it will attempt to produce the slug first utilizing the title, and afterwards, if a post by that title already exists, it will attempt to fix the ID again.
Slugs are the primary things read by search engines. That ought to, as of now, give you an idea on how essential they are. To utilize a slug, first add the slug alternative to the friendly_id assistant in the Post Model.
Sul nostro sito web utilizziamo i cookie per offrirvi l'esperienza più pertinente possibile, ricordando le vostre preferenze e le vostre visite ripetute. Facendo clic su "ACCETTA TUTTI", si acconsente all'uso di TUTTI i cookie. Tuttavia, è possibile visitare "Impostazioni dei cookie" per fornire un consenso controllato.
Questo sito Web utilizza i cookie per migliorare la tua esperienza durante la navigazione nel sito Web. Di questi, i cookie classificati come necessari vengono memorizzati nel tuo browser in quanto sono essenziali per il funzionamento delle funzionalità di base del sito web. Utilizziamo anche cookie di terze parti che ci aiutano ad analizzare e comprendere come utilizzi questo sito web. Questi cookie verranno memorizzati nel tuo browser solo con il tuo consenso. Hai anche la possibilità di disattivare questi cookie. Ma la disattivazione di alcuni di questi cookie potrebbe influire sulla tua esperienza di navigazione.
I cookie necessari sono assolutamente essenziali affinché il sito web funzioni correttamente. Questi cookie garantiscono le funzionalità di base e le caratteristiche di sicurezza del sito web, in modo anonimo.
Biscotto
Durata
Descrizione
cookielawinfo-checkbox-analytics
11 mesi
Questo cookie è impostato dal plug-in GDPR Cookie Consent. Il cookie viene utilizzato per memorizzare il consenso dell'utente per i cookie nella categoria "Analytics".
cookielawinfo-checkbox-funzionale
11 mesi
Il cookie è impostato dal consenso cookie GDPR per registrare il consenso dell'utente per i cookie nella categoria "Funzionali".
cookielawinfo-checkbox-necessario
11 mesi
Questo cookie è impostato dal plug-in GDPR Cookie Consent. I cookie vengono utilizzati per memorizzare il consenso dell'utente per i cookie nella categoria "Necessari".
cookielawinfo-checkbox-altri
11 mesi
Questo cookie è impostato dal plug-in GDPR Cookie Consent. Il cookie viene utilizzato per memorizzare il consenso dell'utente per i cookie nella categoria "Altro.
cookielawinfo-checkbox-performance
11 mesi
Questo cookie è impostato dal plug-in GDPR Cookie Consent. Il cookie viene utilizzato per memorizzare il consenso dell'utente per i cookie nella categoria "Prestazioni".
visti_cookie_policy
11 mesi
Il cookie viene impostato dal plug-in GDPR Cookie Consent e viene utilizzato per memorizzare se l'utente ha acconsentito o meno all'uso dei cookie. Non memorizza alcun dato personale.
I cookie funzionali aiutano a eseguire determinate funzionalità come la condivisione del contenuto del sito Web su piattaforme di social media, la raccolta di feedback e altre funzionalità di terze parti.
I cookie per le prestazioni vengono utilizzati per comprendere e analizzare gli indici di prestazione chiave del sito Web che aiutano a offrire ai visitatori un'esperienza utente migliore.
I cookie analitici vengono utilizzati per capire come i visitatori interagiscono con il sito web. Questi cookie aiutano a fornire informazioni sulle metriche relative al numero di visitatori, frequenza di rimbalzo, fonte di traffico, ecc.
I cookie pubblicitari vengono utilizzati per fornire ai visitatori annunci e campagne di marketing pertinenti. Questi cookie tracciano i visitatori attraverso i siti Web e raccolgono informazioni per fornire annunci personalizzati.