Was ist der Unterschied zwischen Controllern und Aktionen in Ruby on Rails?

8

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!

    
mobesa 04.01.2014, 11:01
quelle

3 Antworten

10

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

zu entsprechen

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

    
Richard Peck 04.01.2014, 11:23
quelle
5

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.

    
Panagiotis Atmatzidis 04.01.2014 11:29
quelle
0

Erklärung durch Analogie (einfache Erklärung ohne zu technisch zu werden)

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.

Ich organisiere meine Mitarbeiter basierend auf der Art der Arbeit, die sie tun

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.

Die Bedeutung der Analogie?

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.

  • ein Dokument oder
  • erhalten
  • Bearbeiten Sie etwas oder sogar
  • Erstellen eines neuen Dokuments.

Hoffe, dass die Dinge klar werden.

    
BKSpurgeon 31.01.2018 22:49
quelle