Rails routet mit dem Bereich ": locale" und oberflächennah verschachtelten Ressourcen

8

Ich möchte, dass Rails länderspezifische Routen für mich behandelt, z. B.

%Vor%

Das funktioniert gut mit der Routen-Definition:

%Vor%

Aber zur gleichen Zeit haben Unternehmen flach verschachtelte Ressourcen, so:

%Vor%

Das erlaubt Pfade wie /en/companies/1/pages , aber keine Pfade wie /en/pages/1/edit . Da "seicht" auch den "locale" -Teil des Pfades entfernt, scheint es, als wäre ich bei /pages/1/edit?locale=en hängengeblieben. Gibt es keine Möglichkeit, Rails dazu zu bringen, flache verschachtelte Ressourcen mit Gebietsschemas so zu behandeln, dass ich /en/pages/1/edit verwenden kann?

    
Pascal Lindelauf 21.06.2011, 08:52
quelle

2 Antworten

14

Ah, ja! Ich habe die Antwort in der API-Dokumentation gefunden. Die Magie ist im :shallow_path Schlüsselwort und im obigen Beispiel funktioniert es wie folgt:

%Vor%

Jetzt funktioniert eine URL wie /en/pages/1/edit perfekt!

    
Pascal Lindelauf 21.06.2011, 10:06
quelle
3

Vielen Dank Pascal, das war mir sehr nützlich. Beim Einrichten der verschachtelten Ressourcen ist mir ein ähnliches Verhalten aufgefallen.

Ich würde etwas hinzufügen, die Option, eine Blockanweisung für seicht anstelle eines Parameters zu verwenden. Mit der von Ihnen angegebenen Syntax sind nur die direkten Nachkommen (: pages) flach.

Wenn Sie auf jeden Fall eine Ebene tiefer verschachteln möchten (lassen Sie uns das Argument überspringen, ob dies die beste Vorgehensweise ist oder nicht), wird die Verwendung eines flachen Blocks die Tiefe so tief wie nötig tragen:

%Vor%

Hier ist ein Beispiel, welche verfügbaren Routen-Helfer Sie für alle darin verschachtelten Ressourcen haben werden: Benutzer

%Vor%     
Olivier Lacan 17.08.2011 19:50
quelle