Wie ändere ich Routen in Ruby auf Schienen?

8

Ich habe gerade Ruby on Rails installiert und ein Gerüst mit dem Namen posts erstellt. RoR generierte Controller und andere benötigte Dateien für mich.

Ich habe eine neue Methode in posts_controller erstellt, kann aber nicht darauf zugreifen. Ich habe mir andere Methoden angesehen, die in der Steuerung sind, und es sieht so aus, als ob ich auf sie durch /posts/[MY POST ID]/[MY METHOD NAME] zugreifen muss.

Wenn ich meine benutzerdefinierte Methode hello im Controller erstellt habe, wie kann ich darauf zugreifen?

Ich habe routes.rb betrachtet, aber es gibt keine Konfiguration dafür.

Aktualisiert:

Ich verstehe, dass ich es manuell in routes.rb konfigurieren kann, aber wie funktionieren alle anderen Methoden? Ich habe zum Beispiel die Methoden " edit " und " update " im Controller " posts_controller.rb ". Wie funktionieren diese beiden Methoden, ohne Routen zu konfigurieren?

%Vor%

Ich kann keine Konfiguration finden, die /posts/[0-9]/edit Muster entspricht.

    
Moon 06.10.2011, 00:39
quelle

5 Antworten

9

Die von Ihnen gesuchte Dokumentation ist Routing von außen . Sobald Sie dies gelesen haben, werden Sie alles verstehen, was Rails tut, um Ihre Anfrage zu beantworten und auf die Methode in Ihrem Controller zu zeigen.

    
Jordan Running 06.10.2011, 00:49
quelle
5

Sie müssen eine Route für routes.rb hinzufügen. Zum Beispiel:

%Vor%

Sehen Sie sich diesen Rails-Leitfaden zum Routing an , damit Sie das Rails-Routing besser verstehen können.

    
molf 06.10.2011 00:51
quelle
4

Damit haben Sie einen guten Start auf den Routen: Ссылка

Nicht jede Methode, die Sie erstellen, wird einen eigenen Pfad haben, rails basiert auf dem Ruheprinzip und Ihr Gerüst hat Methoden im Post-Controller erstellt, die diesen Pfaden folgen, wie index, show etc ....

Sie können Ihre Methode erzwingen, eine Route hinzuzufügen, aber in Wirklichkeit müssen Sie dies eigentlich nur selten tun, da die Einhaltung der Konvention viel einfacher ist.

    
cbron 06.10.2011 00:49
quelle
3

In Rails 3.x

match 'posts/hello' => 'posts#hello'

Verfügbar unter example.com/posts/hello

    
Josh Diehl 06.10.2011 00:47
quelle
1

Wenn Sie scaffold zum Generieren von Post verwendet haben, wurde in Ihrer resources :posts -Datei eine Zeile routes.rb hinzugefügt. Diese Zeile konfiguriert Routen für alle Controlleraktionen, die generiert wurden. Wie Caleb oben erwähnt, hat nicht jede Aktion einen eigenen Pfad. Ein einzelner Pfad kann mehreren Aktionen entsprechen, da Rails auch die HTTP-Methode berücksichtigt. So entspricht beispielsweise der Pfad /posts mit der HTTP-Methode GET der Controller-Aktion index , während der gleiche Pfad mit der HTTP-Methode PUT der Controller-Aktion update entspricht. Sie können diese Verknüpfungen sehen, wenn Sie rake routes von der Konsole ausführen. Ich stimme Jordan und Caleb zu, dass die Rails Guides eine gute Lektüre sind und Ihnen helfen werden, Routen zu verstehen.

    
John 06.10.2011 04:18
quelle

Tags und Links