2010-12-10 15 views
2

Dies ist eine ziemlich offene Frage, und ich bin nur auf der Suche nach der besten Möglichkeit.Wie überschreibe ich URLs basierend auf dem Titel?

Benutzer können Links mit Titeln veröffentlichen. Und ich möchte, dass meine URLs für SEO-Zwecke diese Titel anzeigen. Ähnlich wie ich glaube stackoverflow funktioniert.

Also, wenn der Titel "My foobar mit meiner Katze gerade gemacht out" ist

würde ich die URL sein mag: www.website.com/posts/My-foobar-just-made-out-with-my-cat

Irgendwelche Ideen?

Vielen Dank im Voraus !!

+0

Was ist die Frage? – deamon

Antwort

2

Ich habe dies in einer alten Rails 2.x App verwendet. Es kann ein besserer Ansatz sein, den Titel zu schrubben ...

(im Modell geht)

def to_param 
    seo_uri 
end 

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

hoffe, das hilft!

UPDATE

Kommentare zu dieser Antwort angezeigt ein neues Verfahren für Rails 3 Benutzer verfügbar ist: #parameterize. Die Rails API document for this method zeigt, wie sollte es (Cut-n-Paste) verwendet werden:

class Person 
    def to_param 
    "#{id}-#{name.parameterize}" 
    end 
end 

@person = Person.find(1) 
# => #<Person id: 1, name: "Donald E. Knuth"> 

<%= link_to(@person.name, person_path %> 
# => <a href="/person/1-donald-e-knuth">Donald E. Knuth</a> 
+0

Das ist sehr schlau Brian! Wie schreibt das jedoch die Standard-URL's um? – Trip

+2

parametrisiert() dies nicht? –

+0

@Paul - War dieser neuen Flexion erst bewusst, als du es erwähnt hast! Danke für die Köpfe hoch! Ich aktualisiere meine Antwort, um dies für Benutzer von Rails 3 einzubinden ... – Brian

2

Es ist ein wirklich fantastisches Plugin, FriendlyId, die all dies für Sie behandelt. Viele wirklich clevere Funktionen, einschließlich Scopes und Handhabung von 301 Redirects beim Titelwechsel. Dies unterscheidet sich von stackoverflow und Brians Methode darin, dass die ID nicht in der URL verwendet wird.

Verwandte Themen