Suchmaschinenfreundliche Links mit Ruby on Rails generieren

Standardmäßig sehen in Ruby on Rails generierte Links in etwa so aus:

http://www.example.com/posts/10345

In Hinblick auf die Suchmaschinenfreundlichkeit einer Seite und auch für den Besucher selbst, wäre es aber schöner, wenn die URL z.B. so aussehen würde:

http://www.example.com/posts/10345-Rails-3-ist-fertig

Das Rails-Framework hat dafür einen einfachen wie unkomplizierten Trick auf Lager:

Jedes ActiveRecord Objekt besitzt in Rails eine Methode namens to_param, die standardmäßig den Primär-Schlüssel des Objekts, also die ID, zurück liefert. Um eine suchmaschinenfreundliche URL zu generieren, muss diese Methode überschrieben werden, sodass sie einen entsprechenden String zurück gibt, der den jeweiligen Datensatz eindeutig identifiziert. Für die obige URL müsste das so aussehen:

  1.   def to_param
  2.     "#{id}-#{title.gsub(/[^a-z0-9]+/i, '-')}"
  3.   end

Anschließend kann mit der Methode und dem link_to Helper wie üblich der gewünschte Link erstellt werden:

  1. < %= link_to(@post.title, blog_post(@post.to_param)) %>

Es macht Sinn, sich daran zu gewöhnen, bei der Generierung von Links immer die Methode to_param anstatt der id zu verwenden, auch wenn sie im jeweiligen Model gar nicht überschrieben wurde. Meine Erfahrung hat gezeigt, dass man sich das später manchmal durchaus anders überlegt ;-). Somit erspart man sich ein nachträgliches Anpassen der Views.

Share

Comments are closed.