Dynamische CMS wie Routen in Ruby on Rails

7

Ich möchte eine CMS-ähnliche Site erstellen, auf der der Benutzer mit einigen generischen Seiten beginnt, d. h.

  • Startseite
  • über
  • Kontakt
  • usw.

und von dort aus können untergeordnete Seiten dynamisch hinzugefügt werden, zum Beispiel

  • Startseite
    • Artikel
      • Artikel1
        • etwas
          • etwas anderes
      • article2
  • über
  • Kontakt
  • usw.

Um dies zu erreichen, plane ich eine Art selbstreferenzieller Assoziation wie

%Vor%

Die einzige Sache, mit der ich Probleme habe, ist die Routengenerierung. Da Seiten im laufenden Betrieb hinzugefügt werden können, muss ich dynamisch Routen für diese Seiten generieren und es gibt keine Möglichkeit zu wissen, wie viele Ebenen tief eine Seite geschachtelt sein kann.

Wenn ich also mit der Homepage anfange: /

und fange dann an, Seiten hinzuzufügen, d. h.

/ articles / article1 / etwas / etwas anderes / etwas anderes

Wie kann so etwas mit dem Schienen-Routing-Modell erreicht werden?

    
KJF 22.04.2009, 08:55
quelle

5 Antworten

9

Sobald Sie eine Möglichkeit zur Generierung der URL-Zeichenfolge für Ihre Page Datensätze haben (und ich werde diesen Teil Ihnen überlassen), können Sie einfach jede Seite in config/routes.rb :

abbilden %Vor%

Und ein Beobachter muss das Seitenmodell anweisen, Routen neu zu laden, wenn sich etwas ändert:

%Vor%

Vergessen Sie nicht, config/environment.rb zu bearbeiten, um den Beobachter zu laden:

%Vor%     
kch 30.04.2009 11:48
quelle
8

Eine Lösung für dieses Problem ist das dynamische Laden von Routen von Hooks auf Ihren Modellen. Beispiel: Ein Ausschnitt aus dem Slug -Modell auf meiner Site:

%Vor%

Damit wird die Route mit der höchsten Priorität (0 im Routing-Array im Speicher) nach dem Speichern eingefügt.

Es klingt auch so, als ob Sie ein Tree-Management-Plugin verwenden sollten und wie geniales Nested-Set oder besser geschachteltes Set, um den Baum für Ihre Site zu verwalten.

    
Ben 22.04.2009 13:19
quelle
2

Sie müssen die Route selbst analysieren

%Vor%

Jetzt sollten Sie eine params[:url] in Ihrer Aktion zur Verfügung haben, die den Anforderungspfad als ein durch die Schrägstriche getrenntes Array darstellt. Sobald Sie diese Zeichenfolgen haben, ist es einfach, die benötigten Modelle von dort zu finden.

Das war aus der Erinnerung, und es ist lange her. Hoffe es funktioniert für dich.

    
Alex Wayne 22.04.2009 09:09
quelle
0

Betrachten Sie RadiantCMS-Quellen, sie implementieren diese Funktionalität, soweit ich ihre Selbstbeschreibung verstehe.

    
Fer 23.04.2009 09:59
quelle
0

Ich habe eine ähnliche Funktionalität in ein Rails-Juwel implementiert, indem ich selbstreferenzierende Assoziationen und eine baumartige js-Schnittstelle verwendet habe, um die "Seiten" neu anzuordnen und zu verschachteln.

Templating-Sprache und Authentifizierung / Autorisierung müssen vom Entwickler implementiert werden. Ссылка

    
Macario 27.10.2010 18:04
quelle

Tags und Links