Ich möchte den ** Controller ** der Rails-Anwendung erläutern.
** "Wissen über das MVC-Modell" ** ・ ** "Über die Rolle des Controllers" ** ・ ** "Praktische Verwendung" **
Dies ist eine der Ideen für eine gute Verwaltung von Code beim Erstellen einer Anwendung. Es ist nur eine Denkweise, daher ist es nicht absolut richtig. Rails-Anwendungen enthalten dieses MVC-Framework.
** "Model View Controller" **.
・ Model
・ ・ ・ Verantwortlich für die Geschäftslogik im System
・ Ansicht
・ ・ ・ Verarbeitung wie Anzeige und Eingabe / Ausgabe
Controller Controller
・ ・ ・ Steuert Modell und Ansicht basierend auf Benutzereingaben
** "Controller" ** empfängt die Anfrage vom Client
Bitten Sie für ** "Controller" ** ** "Model" **, die Daten zu verarbeiten.
** "Modell" ** verarbeitet Daten aus der Datenbank und gibt Daten an ** "Controller" ** zurück
** "Controller" ** fordert Sie auf, die in ** "View" ** empfangenen Daten zu verarbeiten
** "Ansicht" ** erstellt ein Formular (HTML-Dokument), das für den Client geeignet ist, und gibt es an ** "Controller" ** zurück
** "Controller" ** gibt den HTML-Text als Antwort an den Client zurück
Durch Wiederholen von 1 bis 6 wird es als Webanwendung eingerichtet.
** Fazit **
Diese Methode beschreibt den spezifischen Verarbeitungsinhalt der durch das Routing angegebenen Aktion.
Bild der Aktionsmethode
class SamplesController < ApplicationController
def index
#Spezifischer Verarbeitungsinhalt
......
......
end
end
In diesem Beispiel ... Wenn die Indexaktion des Beispielcontrollers im Routing angegeben ist, beschreiben Sie die auszuführende Aktionsmethode in Form von "def index ... end".
Erstellen, Ändern oder Abrufen einer Datenbank über ein Modell.
Weisen Sie das Modell mit den Methoden der ActiveRecord-Klasse an, die das Modell erbt. Nachfolgend einige Beispiele für Methoden.
Methode | Inhalt |
---|---|
all | Holen Sie sich alle Daten in der Datenbank |
find | Holen Sie sich ein Datenelement in die Datenbank |
new | Generieren Sie die Erstellung neuer Daten |
save | Daten in Datenbank speichern |
Bild der Methode
(Modellklassenname).[Methode]
Sample.all
Übergeben der vom Modell empfangenen Daten an die Ansicht und Erstellen der Antwortdaten zur Rückgabe an den Client.
Weisen Sie den Daten aus dem Modell Instanzvariablen zu.
@samples = Sample.all
Dadurch werden die Daten in der Ansichtsdatei verfügbar.
Im Verzeichnis app / controller
Legen Sie die Datei controller name_controller.rb
fest.
Grundsätzlich sollte es ** "Plural" ** sein. Der Grund dafür ist, dass die von Rails verwendeten Dateien automatisch nach Namen erraten werden. Selbst wenn es in der Singularform vorliegen kann, muss der Entwickler den Code explizit schreiben, da dies sonst zu einem unerwarteten Fehler führt.
Name | Beispiel | Bemerkungen |
---|---|---|
Controller-Name | samples | |
Name der Controller-Klasse | SamplesController | Kamelkoffer |
Name der Controller-Datei | samples_controller.rb | Schlangenkoffer |
Der Inhalt der Controller-Datei sieht folgendermaßen aus.
app/controllers/samples_controller.rb
class SamplesController < ApplicationController
def index
#Spezifischer Verarbeitungsinhalt
......
......
end
end
Die erstellte Controller-Datei erbt ** "ApplicationController-Klasse" **.
app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
end
Eine Klasse, die in der Datei app / controller / application_controller.rb
definiert ist.
Es ist eine (fast) leere Klasse, die nur von der ** ActionController :: Base-Klasse ** erbt.
Grundsätzlich erbt jeder Controller die ApplicationController-Klasse. Es wird verwendet, wenn Funktionen, die allen Anwendungen gemeinsam sind (Anmelden / Abmelden usw.), erforderlich sind.
Eine Klasse, die die Grundfunktionalität des Controllers bereitstellt. Es ist für den grundlegenden Teil der Anforderungs- / Antwortverarbeitung verantwortlich.
Der Controller erhält die Parameter der HTTP-Anfrage vom Client über ** "params method" **.
Rails verarbeitet implizit ** Anforderungsparameter ** und speichert die Daten in Parametern im Hash-Format. Es gibt keinen Unterschied, wie Daten empfangen werden, selbst wenn auf ** GET-Anforderung / POST-Anforderung ** zugegriffen wird.
Greifen Sie auf den Webserver zu, indem Sie den Parameter in ** "Anforderungs-URI" ** der Anforderungszeile der HTTP-Anforderung einfügen. Sie können Parameter im ** "URL-Format" ** und ** "Abfrageformat" ** übergeben.
Wenn die folgenden Routing-Einstellungen vorgenommen werden
Prefix Verb URI Pattern Controller#Action
user GET /users/:id(.:format) users#show
Wenn Sie mit der URL "http: // sample.com / users / 7" zugreifen
Der Parameter : id
der Anfrage bedeutet 7
In Rails wird es in params gespeichert und der Wert von "params [: id]" ist "7".
app/controllers/users_controller.rb
class UsersController < ApplicationController
def show
params[:id] # "7"
end
end
Schreiben Sie am Ende der URL "?", Gefolgt von "Parametername = Wert". Wenn mehrere Parameter vorhanden sind, verbinden Sie sie mit "&", um sie zu beschreiben. Verwenden Sie das gleiche Routing wie im obigen Beispiel Wenn Sie mit der URL "http: //sample.com/users/7? Keyword = query & num = 10" zugreifen Der Wert von "params [: keyword]" ist "query" und "params [: num]" ist "10".
app/controllers/users_controller.rb
class UsersController < ApplicationController
def show
params[:keyword] # "query"
params[:num] # "10"
end
end
Dies ist eine Anforderung, die auftritt, wenn der Client bei der Eingabe aus dem Formular auf die Schaltfläche "Senden" drückt. Greifen Sie auf den Webserver zu, indem Sie die Parameter in den ** "body" ** der HTTP-Anforderung aufnehmen.
Sie können auch mehr Parameter als eine GET-Anforderung senden.
Verwenden Sie beim Speichern von "params" in der Datenbank einen Mechanismus namens ** "Strong Parameters" **.
Es ist ein Mechanismus, um die Sicherheitsanfälligkeit von "Mass Assignment" zu beseitigen, die bis zur Rails3-Serie verwendet wurde. In "Massenzuweisung" wurden die Informationen zu Parametern im Zusammenhang mit dem Speichern in ** Modell ** beschrieben. Beschreiben Sie unter "Starke Parameter" die Informationen der Parameter, die in ** Controller ** gespeichert werden sollen.
Strong_Bild der Parameter
class UsersController < ApplicationController
def create
@user = User.new(user_params) # user_Erstellen Sie neue Daten mit der params-Methode
@user.save #Über Modell in der Datenbank speichern
end
#Starke Parameter werden nicht von außerhalb der Klasse aufgerufen. Schreiben Sie sie daher in einer privaten Methode.
private
def user_params
params.require(:user).permit(:name, :age)
end
end
In diesem Beispiel In der Methode "user_params" werden die zu speichernden Parameter in ": name" und ": age" von ": user" angegeben.
Geben Sie den Namen der Tabelle an, die in der Datenbank gespeichert werden soll.
Gibt den Spaltennamen an, der in der Datenbanktabelle gespeichert werden soll.
Das ist alles für die Erklärung des Controllers. Vielen Dank.
Recommended Posts