Je suis nouveau sur Rails donc mon projet actuel est dans un état étrange.
L'une des premières choses que j'ai générées était un modèle "Movie". J'ai ensuite commencé à le définir plus en détail, en ajoutant quelques méthodes, etc.
Je réalise maintenant que j'aurais dû le générer avec Rails generate scaffold
pour connecter des éléments tels que le routage, les vues, le contrôleur, etc.
J'ai essayé de générer l'échafaudage, mais une erreur s'est produite indiquant qu'un fichier de migration portant le même nom existait déjà.
Quel est le meilleur moyen pour moi de créer un échafaudage pour mon "film" maintenant? (en utilisant Rails 3)
TL; DR: Rails g scaffold_controller <name>
Même si vous avez déjà un modèle, vous pouvez toujours générer les fichiers de contrôleur et de migration nécessaires à l'aide de l'option Rails generate
. Si vous exécutez Rails generate -h
, vous pouvez voir toutes les options disponibles.
Rails:
controller
generator
helper
integration_test
mailer
migration
model
observer
performance_test
plugin
resource
scaffold
scaffold_controller
session_migration
stylesheets
Si vous souhaitez générer un échafaudage de contrôleur pour votre modèle, voir scaffold_controller
. Juste pour la clarté, voici la description à ce sujet:
Remplace un contrôleur échafaudé et ses vues. Transmettez le nom du modèle, CamelCased ou under_scored, et une liste de vues en tant qu'arguments. Le nom du contrôleur est récupéré sous la forme d'une version plurielle du nom du modèle.
Pour créer un contrôleur dans un module, spécifiez le nom du modèle sous la forme d'un chemin, par exemple 'parent_module/controller_name'.
Cela génère une classe de contrôleur dans app/controllers et appelle des générateurs d’aide, de moteur de template et de cadre de test.
Pour créer votre ressource, vous utiliseriez le générateur resource
, et pour créer une migration, vous pouvez également voir le générateur migration
(voyez, il existe un motif pour toutes ces folies). Ceux-ci fournissent des options pour créer les fichiers manquants pour construire une ressource. Sinon, vous pouvez simplement exécuter Rails generate scaffold
avec l'option --skip
pour ignorer tous les fichiers existants :)
Je recommande de passer un peu de temps à regarder les options à l'intérieur des générateurs. À mon avis, ils ne sont pas très bien documentés dans les livres, mais ils sont très utiles.
Excellente réponse de Lee Jarvis
, il ne s'agit que de la commande, par exemple; nous avons déjà un modèle existant appelé User:
Rails g scaffold_controller User
Pour ceux qui démarrent une application Rails avec une base de données existante, il existe un bijou appelé schema_to_scaffold
pour générer un script d'échafaudage. il produit:
Rails g scaffold users fname:string lname:string bdate:date email:string encrypted_password:string
de votre schema.rb
notre votre renommé schema.rb.
cocher la case
Cette commande devrait faire l'affaire:
$ Rails g scaffold movie --skip
Vous pouvez utiliser scaffold_controller
et vous rappeler de passer le attributes
du modèle, sinon un échafaudage sera généré sans les attributs.
Rails g scaffold_controller User name email
# or
Rails g scaffold_controller User name:string email:string
Cette commande générera les fichiers suivants:
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
Dans Rails 5 , vous pouvez toujours exécuter
$Rails generate scaffold movie --skip
pour créer tous les fichiers d'échafaudage manquants ou
Rails generate scaffold_controller Movie
pour créer le contrôleur et afficher uniquement.
Pour une meilleure explication, consultez échafaudage Rails