J'ai obtenu un projet qui a des contrôleurs (code minimal uniquement) et des modèles, mais les vues manquent. Existe-t-il un moyen de générer les vues uniquement à l'aide d'un échafaudage ou d'un autre outil?
Rails g scaffold User --migration=false --skip
Le --skip
signifie ignorer les fichiers qui existent déjà. (L'inverse est --force
.)
Si vous ne voulez pas d'aide, --helpers=false
.
Exemple de sortie après la suppression de mes vues User
:
invoke active_record
identical app/models/user.rb
invoke test_unit
identical test/unit/user_test.rb
skip test/fixtures/users.yml
route resources :users
invoke scaffold_controller
identical app/controllers/users_controller.rb
invoke erb
exist app/views/users
create app/views/users/index.html.erb
create app/views/users/edit.html.erb
create app/views/users/show.html.erb
create app/views/users/new.html.erb
create app/views/users/_form.html.erb
invoke test_unit
identical test/functional/users_controller_test.rb
invoke helper
identical app/helpers/users_helper.rb
invoke test_unit
identical test/unit/helpers/users_helper_test.rb
invoke assets
invoke coffee
identical app/assets/javascripts/users.js.coffee
invoke scss
identical app/assets/stylesheets/users.css.scss
invoke scss
identical app/assets/stylesheets/scaffolds.css.scss
C'est ce que le générateur d'échafaudage appelle en interne:
Rails g erb:scaffold User
erb
est le moteur de template utilisé, vous pouvez donc également utiliser haml:scaffold
.
Vous devez spécifier explicitement les champs que vous souhaitez que l'échafaudage utilise - Rails ne pas les déduit automatiquement du modèle créé. Par exemple:
Rails g erb:scaffold User firstname lastname reputation
Voir Rails g --help
pour des options telles que sauter, forcer l'écrasement et les essais à sec ou generate scaffold --help
pour des informations spécifiques à la génération d'échafaudages.
"Un autre outil" ...
Que diriez-vous de pouvoir faire "script/generate view_for model_name
"? :)
Il y a un petit bijou pour ça - View Mapper . Il a Ruby sur Rails 2 et 3 versions.
Je rencontre juste le même ton problème. Je l'ai fait. Plus de détails ci-dessous:
- Tout d'abord, je renomme le dossier views/your_model en views/your_model_bak. Afin de revenir en cas d'échec plus tard
- Ensuite, exécutez la commande
Rails g scaffold YourModel [field[:type][:index]] --skip
- Enfin, vous devez mettre à jour votre permis dans votre contrôleur de modèle.
Espérons que cela peut vous aider.
Une petite astuce consiste à ajouter "--no-test-framework
"si vous utilisez Rspec et que vous ne souhaitez pas que des fichiers de test soient générés pour chaque vue dans les spécifications/vues