Schienen 3, flache Routen

8

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

    
CambridgeMike 08.04.2011, 23:32
quelle

4 Antworten

5

Sie müssen die Option: shallow auf die verschachtelten Ressourcen anwenden. Dies sollte Ihnen geben, was Sie wollen:

%Vor%     
opsb 09.04.2011 03:17
quelle
3

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:

%Vor%

Obwohl es nur scheint, um sie auf 2 Ebenen zu erweitern, anstatt die vollständige verschachtelte Route. Check out rake routes für mehr.

    
adamlamar 05.10.2011 20:14
quelle
0

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."

    
aguazales 16.08.2012 13:05
quelle
0

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.

    
Ogrish Man 28.12.2015 19:44
quelle