In Schienen 2.x habe ich flache Routen benutzt, aber das scheint auf Schienen 3 zu fehlen (zumindest in der API Ссылка ).
Wenn ich diese Option in Rails 3 übergebe, wirft es keine Fehler, aber ich bekomme auch nicht alle Routen, die ich erwartet habe.
Schienen 3 routes.rb
%Vor%Die Routen fehlend , die mit der 2.x-Äquivalenz generiert wurden, sind (nur ein Beispiel für die Rezepturressource):
GET new_recipe (ich habe nur new_user_recipe) und
POST-Rezept (um ein neues Rezept zu erstellen, habe ich nur POST user_recipe)
Es ist irgendwie sinnvoll, dass diese Routen nicht erzeugt werden, aber mein alter Code hat sich um ihn herum entwickelt, indem er die user_id in jeder Form (weniger elegant, vereinbart) weitergegeben hat.
Frage ist: Gibt es Unterlagen für "flache" Routen in Schienen 3? Gibt es eine Möglichkeit, die Routen zu generieren, die ich aus Schienen 2.x vermisse?
Danke, Mike
Wenn Sie sich die Dokumente von Rails 3 ansehen, sehen Sie, dass shallow
eine Instanzmethode für ActionDispatch::Routing::Mapper::Resources
ist, genau wie resource
, resources
, match
usw. Sie sollten dazu in der Lage sein niste flache Routen mit etwas wie diesem:
Obwohl es nur scheint, um sie auf 2 Ebenen zu erweitern, anstatt die vollständige verschachtelte Route. Check out rake routes
für mehr.
Sie finden die Rails 3-Dokumentation zu verschachtelten oder flachen Routen auf der Schienen-Website .
Bei der Anleitung zum Verschachteln von Routen wird ausdrücklich darauf hingewiesen, dass "Ressourcen niemals mehr als 1 Ebene tief verschachtelt sein sollten."
Es ist sinnvoll, dass Sie nur new_user_recipe anstelle von new_recipe haben. Warum? Denn aus der Perspektive des Rezepts gehört jedes Rezept einem Benutzer sehr.
Ein anderer Punkt ist der
%Vor%ist genau dasselbe wie
%Vor% :shallow
wird vererbt, wie andere Benutzer darauf hingewiesen haben. Denken Sie darüber nach, :shallow
bedeutet, dass Sie den linken Teil des URL-Musters weglassen können, sobald Sie sich sicher sind, an welcher Ressource Sie gerade arbeiten. Wenn Sie :shallow
auf die äußerste Ebene Ihrer Ressource setzen, sollte es den gleichen Effekt haben, wie Sie es auf die zweite Ebene gelegt haben (Rezept in Ihrem Beispiel). Da Sie beim Arbeiten an der äußersten Ressource (Benutzer in Ihrem Beispiel) nichts auslassen müssen, ist es bereits der am weitesten links liegende Teil des URL-Musters und kann nicht weggelassen werden.
Tags und Links ruby-on-rails-3 ruby-on-rails routes