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?
Ich kann keine Konfiguration finden, die /posts/[0-9]/edit
Muster entspricht.
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.
Sie müssen eine Route für routes.rb
hinzufügen. Zum Beispiel:
Sehen Sie sich diesen Rails-Leitfaden zum Routing an , damit Sie das Rails-Routing besser verstehen können.
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.
In Rails 3.x
match 'posts/hello' => 'posts#hello'
Verfügbar unter example.com/posts/hello
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.
Tags und Links ruby-on-rails routes scaffold