2009-05-21 10 views
2

Ich versuche saubere URLs in Schienen zu erstellen. Ich habe PermalinkFu installiert und ich kann die Links gut erstellen. Was ich tun möchte, ist meine RESTful Ressource zu halten. Kann ich überladen:Gibt es eine Möglichkeit, map.resources in Schienen zu überlasten?

map.resources :location 

zurückgeben: permalink variable statt: id?

ähnlich wie ich erstellen kann:

map.connect 'location/:permalink' :controller => 'location', :action => 'show' 

Eine Randbemerkung: Was für den Umgang mit Permalinks die beste Praxis ist, sollten sie verwenden nur die Ansicht/show-Aktion dann angezeigt verwenden: ID für bearbeiten/zerstören/etc? Und sollte ich mich sogar mit dem Controller beschäftigen: id statt: permalink als Variablenname?

Antwort

2

Es ist mein Weg, um dieses Problem zu lösen:

Verwendung to_param Methode in Ihrem Modell Ort:

def to_param 
    permalink 
end 

und in Ihrem routes.rb

map.resources :location 

Es Es ist nicht notwendig, eine Regel für den Permalink

hinzuzufügen

dann können Sie in Ihrem Controller wie folgt

@location = Location.find_by_permalink params[:id] 

Hoffe, es funktioniert zu finden.

+0

Dies ist genau das, was Sie tun. –

+1

Richtig, das obige ist was ich jetzt habe und versuche mich zu ändern. Das scheint für niemanden schlampig? Verwenden Sie die Variable params [: id], wenn Sie wirklich Params übergeben [: permalink]? Was ich tun möchte, ist die map.resources: location bevölkern die params [: permalink] var anstelle von params [: id] –

+0

Ich persönlich denke, es ist eine sehr geringe Sorge. –

0

Gibt es einen Grund, warum Sie die to_param Methode in Ihrem Location Modell nicht überschreiben können? Ryan Bates hat eine Railscast that explains how to do this.

Wenn Sie ein Purist sein wollen, dann sollten Sie den Permalink für alle Aktionen verwenden, aber es ist zweifellos bequemer, die numerische ID für die Aktionen zum Bearbeiten und Zerstören zu verwenden. Ich denke, es hängt davon ab, ob Sie von Leuten belästigt werden, die den HTML-Code sehen und die eigentlichen Primärschlüssel Ihrer Datensätze sehen können. Manche halten das für ein Sicherheitsloch.

+0

siehe Kommentar oben. –

Verwandte Themen