Ich bin neu in Rails, also befindet sich mein aktuelles Projekt in einem seltsamen Zustand.
Eines der ersten Dinge, die ich generiert habe, war ein "Movie" -Modell. Ich fing dann an, es genauer zu definieren, fügte ein paar Methoden hinzu usw.
Mir ist jetzt klar, dass ich es mit Rails generate scaffold
Hätte generieren sollen, um Dinge wie das Routing, Views, Controller usw. anzuschließen.
Ich habe versucht, das Gerüst zu generieren, habe jedoch die Fehlermeldung erhalten, dass bereits eine Migrationsdatei mit demselben Namen vorhanden ist.
Wie erstelle ich jetzt am besten ein Gerüst für meinen "Film"? (mit Rails 3)
TL; DR: Rails g scaffold_controller <name>
Auch wenn Sie bereits ein Modell haben, können Sie mit der Option Rails generate
Die erforderlichen Controller- und Migrationsdateien generieren. Wenn Sie Rails generate -h
Ausführen, werden alle verfügbaren Optionen angezeigt.
Rails:
controller
generator
helper
integration_test
mailer
migration
model
observer
performance_test
plugin
resource
scaffold
scaffold_controller
session_migration
stylesheets
Wenn Sie ein Steuerungsgerüst für Ihr Modell erstellen möchten, lesen Sie scaffold_controller
. Zur Verdeutlichung hier die Beschreibung dazu:
Löscht einen gerüsteten Controller und seine Ansichten. Übergeben Sie den Modellnamen, entweder CamelCased oder under_scored, und eine Liste von Ansichten als Argumente. Der Controller-Name wird als pluralisierte Version des Modellnamens abgerufen.
Um einen Controller innerhalb eines Moduls zu erstellen, geben Sie den Modellnamen als Pfad wie 'parent_module/controller_name' an.
Dies generiert eine Controller-Klasse in App/Controllern und ruft Helfer-, Template-Engine- und Test-Framework-Generatoren auf.
Um Ihre Ressource zu erstellen, würden Sie den Generator resource
verwenden, und um eine Migration zu erstellen, können Sie auch den Generator migration
anzeigen (siehe, all dieser Wahnsinn hat ein Muster). Diese bieten Optionen zum Erstellen der fehlenden Dateien zum Erstellen einer Ressource. Alternativ können Sie einfach Rails generate scaffold
Mit der Option --skip
Ausführen, um alle vorhandenen Dateien zu überspringen :)
Ich empfehle einige Zeit damit zu verbringen, die Optionen in den Generatoren zu betrachten. Sie sind etwas, von dem ich glaube, dass sie in Büchern und dergleichen nicht besonders gut dokumentiert sind, aber sie sind sehr praktisch.
Tolle Antwort von Lee Jarvis
, dies ist nur der Befehl, z. Wir haben bereits ein Modell namens User:
Rails g scaffold_controller User
Für diejenigen, die eine Rails App mit vorhandener Datenbank starten, gibt es ein cooles Juwel namens schema_to_scaffold
, um ein Gerüstskript zu generieren. es gibt aus:
Rails g scaffold users fname:string lname:string bdate:date email:string encrypted_password:string
von deiner schema.rb
unser dein umbenanntes schema.rb.
Überprüfen Sie es
Dieser Befehl sollte den Trick machen:
$ Rails g scaffold movie --skip
Sie können scaffold_controller
und denken Sie daran, das attributes
des Modells zu übergeben. Andernfalls wird das Gerüst ohne die Attribute generiert.
Rails g scaffold_controller User name email
# or
Rails g scaffold_controller User name:string email:string
Dieser Befehl generiert folgende Dateien:
create app/controllers/users_controller.rb
invoke haml
create app/views/users
create app/views/users/index.html.haml
create app/views/users/edit.html.haml
create app/views/users/show.html.haml
create app/views/users/new.html.haml
create app/views/users/_form.html.haml
invoke test_unit
create test/controllers/users_controller_test.rb
invoke helper
create app/helpers/users_helper.rb
invoke test_unit
invoke jbuilder
create app/views/users/index.json.jbuilder
create app/views/users/show.json.jbuilder
In Rails 5 können Sie noch laufen
$Rails generate scaffold movie --skip
um alle fehlenden Gerüstdateien zu erstellen oder
Rails generate scaffold_controller Movie
um den Controller zu erstellen und nur anzuzeigen.
Zur besseren Erklärung lesen Sie Schienengerüst