Kann mir jemand den Unterschied zwischen Controllern und Aktionen in Ruby on Rails erklären?
Ich habe diese Definition aus dem offiziellen Schienenführer abgerufen:
Der Zweck eines Controllers besteht darin, spezifische Anfragen für die Anwendung zu erhalten. Routing entscheidet welcher Controller welche Anfragen erhält. Oft gibt es mehr als eine Route zu jedem Controller, und verschiedene Routen können durch verschiedene Aktionen bedient werden. Der Zweck jeder Aktion ist um Informationen zu sammeln, um sie einer Ansicht zur Verfügung zu stellen.
Ich bin verwirrt. Bitte mach es so einfach wie möglich, seit ich Neuling bin!
Danke!
Controller sind nur Ruby Class Dateien, die eine Reihe von Instanzmethoden innerhalb
Grundlegende Erklärung
Rails Controller sind im Grunde Dateien, in denen Aktionen (Methoden) aufbewahrt werden
Bei jedem Zugriff auf eine Rails-App senden Sie eine Anfrage an das System. Die verschiedenen Technologien innerhalb von Rails route
, die zu einem bestimmten action
auffordern, wobei Ihr Code die übergebenen Daten verwenden kann, um irgendeine Art von action
(daher der Name) auszuführen. Die Aktionen werden innerhalb von controllers
gehalten, um der Anwendungsstruktur
Wenn Sie also auf http://yourapp.com/users/new
zugreifen, wird Rails angewiesen, die Methode new
im Controller users
zu laden. Sie können so viele Aktionen in den Controllern ausführen, wie Sie möchten, aber Sie müssen dem Rails routes
-System mitteilen, dass sie dort sind, sonst sind sie nicht zugänglich
Richtige Erklärung
Rails Controllers
sind nur Ruby-Klassen, die eine Reihe von Aktionen speichern
Die "Aktionen" (Instanzmethoden) arbeiten an übergebenen Daten ( params
), um sie zu erstellen Objekte , die entweder an das Modell übergeben oder in anderen Methoden verwendet werden können
Wann immer Sie eine Anfrage an Rails senden (auf eine URL zugreifen), wird zuerst die Middleware ActionDispatch verwendet um Ihre Anfrage an die korrekte Klassenmethode ( controller
) ( action
) zu senden, und dann macht Ihr Code etwas mit diesen Daten
Ihre Aufgabe als Entwickler ist es, die richtigen Controller mit den richtigen Modellen zu verbinden und dem Benutzer die richtigen Daten zur richtigen Zeit zu präsentieren
DISCLAIMER : Ich schreibe keinen Code in Rails (nie). Ich schreibe Sinatra modulare Anwendungen und verwende das MVC-Modell.
Sie müssen zuerst das MVC -Modell klären. Der MVC ist ein Ansatz zur Programmierung von Web-Anwendungen (in RoR) oder Benutzeroberflächen im Allgemeinen. MVC steht für Model-View-Controller . Ich werde versuchen, ein bisschen zu erklären, aber um das zu verstehen, müssen Sie üben und damit spielen.
Das Modell : Wenn Sie die Abstraktionsschichten entfernen, ist dies Ihr Datenbankschema. Die Art und Weise, wie sich Ihre Anwendung verbindet, um Informationen abzurufen.
Die Ansicht : Die Art und Weise, wie diese Informationen abgerufen werden, wird ausgearbeitet und bedient . Im Wesentlichen sehen Sie oder der Client im Browser.
Der Controller : Der Controller interagiert mit dem Programm, um eine angeforderte Ansicht zu erstellen oder ein Modell zu ändern. Sie fordern eine Ansicht an, wenn Sie auf ein Diagramm mit statistischen Informationen zugreifen, und Sie ändern das Modell, wenn Sie DATA darauf eingeben. Im Rails-Ökosystem ist ActionController eine Klasse mit einer Reihe vordefinierter Methoden, mit denen Sie einfachere und schnellere Standard-Controller-Aktionen wie das Aktualisieren eines Formulars usw. durchführen können.
So können Sie mit dem Action Controller Daten in Ihre Modelle (db) ändern oder eine Route anfordern, um Ihre Daten anzuzeigen . usw.
Die Aktion ist nicht von Controllern getrennt. Das sind im Grunde die Controller :-). Alles andere ist statisch .
Wenn Sie das Gefühl haben, dass diese Konzepte immer noch schwer zu verstehen sind, versuchen Sie, in Sinatra eine sehr einfache modulare Anwendung zu erstellen, und Sie werden eine Bodenansicht davon haben, wie die Dinge funktionieren.
Ich arbeite in einem geschäftigen Büro. Ich breche Anweisungen (d. H. "Anfragen") an meine Mitarbeiter aus, um sie dazu zu bringen, etwas zu tun.
z.B.
Manchmal möchte ich ein Dokument, damit ich es lesen kann.
"Ngozi, gib mir bitte die ABC.ASX EOFY Ergebnisse?"
Ja, Sir!
Manchmal bitte ich meine Mitarbeiter, ein vorhandenes Dokument zu bearbeiten:
"Sunita, können Sie diesen Bericht über den Status der Gewerkschaftsadresse bearbeiten?"
"Sicher!" ist die Antwort.
Aber ich habe ein kleines Problem ... Ich habe 10.000 verschiedene Arten von Dokumenten. Manchmal möchte ich: (I) Sportergebnisse und andere Zeiten, die ich will: (ii) die Abendnachrichten, während ich noch zu anderen Zeiten möchte: (iii) eine Sammlung von Donald Trumps letzten 4 Uhr Tweets.
Also habe ich ein neues System erstellt. Ich habe einen Mitarbeiter, der für jede Art von Sache direkt verantwortlich ist.
Ngozi verwaltet die Finanzergebnisse der ASX (Australian Stock Exchange). Und wenn ich möchte, dass Ngozi etwas macht (d. H. Irgendeine Art von Aktion ausführt), dann sage ich ihm, was zu tun ist.
Sunita arbeitet hauptsächlich in der Politik. Manchmal werde ich sie um etwas bitten (zB um einen Bericht zu schreiben - das ist eine Art von 'Aktion', oder ich werde sie bitten, mir ein bestimmtes Dokument zu bringen - eine andere Art von Aktion - und sie wird es tun ich möchte, dass Sunita an der Politik arbeitet und Ngozi an finanziellen Ergebnissen arbeitet. Es ist am besten, ihre Aufgaben getrennt zu halten.).
Und Freddie arbeitet an allem, was Königin betrifft.
usw. usw.
In diesem Fall wäre der Controller die Person, die für die Bearbeitung bestimmter Arten von Anfragen verantwortlich ist. Und die "Aktion" wäre das Besondere, was ich tun möchte:
z.B.
Hoffe, dass die Dinge klar werden.
Tags und Links ruby ruby-on-rails action controllers