So benennen Sie die default-identifier-Parameter "id" in der Schiene " anzeigen.Ressourcen()?
Ich mag alle Standard-Routen, die von Rail Karte.Ressourcen. Aber, es gibt Fälle, wo ich verwenden möchte um ein nicht-numerischer Bezeichner in meiner Strecken. Zum Beispiel, Wenn Sie eine geschachtelte route bestehen der Nutzer und Ihre Beiträge, die eine standard-route kann geschrieben werden als Z:
map.resources :users, :has_many => [:articles] # => e.g. '/users/:id/articles/:id'
Allerdings gibt es viele Vorteile /Gründe mit, nicht die Standard-numerische Bezeichner generiert, durch Schienen. Gibt es eine Möglichkeit, ersetzen Sie die Standard-id :params, um eine weitere kanonische Bezeichner meiner Wahl, ohne was zu schreiben Routen für jede standard-Aktion? Sagen, wenn ich eine route in das folgende format:
'/users/:login/articles/:id'
Ist diese Art von Strecken, erreichbar mit Karte.Ressourcen?
- p.s. Ich Frage dies vor allem, weil Merb-routing-system über diese Funktion verfügt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ab Rails 2.3, es ist nicht möglich, ändern Sie die parameter name und noch das automatische routing, die
#resources
bietet.Als Problemumgehung können Sie die Karte
articles
mit einem:path_prefix
und:name_prefix
:Den
:path_prefix
wirkt sich auf die URL, und die:name_prefix
wirkt die erzeugte benannte Routen, so werden Sie am Ende mit diesen Routen:Als eine Allgemeine Regel-of-Daumen, obwohl, würd ich mich mit den Schienen Standard-übereinkommens von
:user_id
mit dem routing, die Sie geschrieben in deiner Frage. Es wird allgemein davon ausgegangen, dass:id
und:user_id
nicht notwendigerweise "numeric identifier" — Sie bedeuten "resource identifier," was immer das sein mag. Und indem Sie sich an die Standard-Konvention Ihr code leichter zu verstehen, für jeden, der verwendeten Ressourcen-Routen in Rails.Verwendung einer nicht-numerischer Bezeichner für eine Ressource, nur neu definieren
#to_param
im Modell. Dann, stellen Sie sicher, dass Sie eine finder in Ihrem controller, der durch diesen Bezeichner (statt der numerischen ID), wieUser#find_by_login!
.Können Sie ändern die Standardeinstellungen für die Verwendung der ID in URLs durch überschreiben to_param in Ihrem Modell. z.B.
Die einzige andere änderung, die Sie brauchen, um zu finden, die Nutzer nach dem login anstatt-ID im Controller.
:id
parameter der route.