web-dev-qa-db-fra.com

Générer un contrôleur avec toutes les fonctions RESTful

J'essaie de générer un contrôleur avec toutes les actions RESTful réduites. J'avais lu à texte du lien que tout ce que j'avais à faire, c'était d'utiliser le générateur d'appels avec juste un nom de contrôleur. J'ai donc lancé "script/generate rspec_controller Properties" et j'ai reçu un contrôleur vide.

Toute autre suggestion serait la bienvenue.

82
Barb

Je ne connais pas de méthode automatisée, mais si vous le faites:

script/generate controller your_model_name_in_plural new create update edit destroy index show

Tous seront créés pour vous

Mise à jour pour Rails 4

Rails g scaffold_controller Property
132
Marcos Placona

Dans Rails 3, il y a aussi Rails generate scaffold_controller .... Plus d'infos ici .

97
gdelfino

EDIT (à cause de certains commentaires) : La question initiale était en 2010 - par conséquent, la réponse n'est PAS pour Rails 4, mais pour Rails 2 !!

essayez d'utiliser des échafaudages.

script/generate scaffold controller Properties

Section des documents officiels sur Ruby sur Rails

Je suis sûr que vous pouvez trouver plus d'informations si vous effectuez une recherche google sur Rails échafaudages. J'espère que cela vous aidera.

EDIT: pour Rails 4

Rails g scaffold_controller Property

37
konung

Dans Rails 4/5, la commande suivante fait l'affaire pour moi.

Rails g scaffold_controller Property --skip-template-engine

Il générait les actions du contrôleur mais pas la vue.

13
pmargreff

Rails 5.1

Point de départ:

Vous avez créé un modèle sans contrôleur, ni vues (par exemple, thru: Rails generate model category)

Objectif:

Mettre à niveau vers une ressource RESTful complète

Commander:

Rails generate scaffold_controller category

Il remplace un contrôleur échafaudé, ses sept actions RESTful et les vues associées. (Remarque: vous pouvez transmettre le nom du modèle CamelCased ou under_scored.)

Sortie:

varus@septimusSrv16DEV4:~/railsapps/dblirish$ Rails generate scaffold_controller category
Running via Spring preloader in process 45681
      create  app/controllers/categories_controller.rb
      invoke  erb
      create    app/views/categories
      create    app/views/categories/index.html.erb
      create    app/views/categories/edit.html.erb
      create    app/views/categories/show.html.erb
      create    app/views/categories/new.html.erb
      create    app/views/categories/_form.html.erb
      invoke  test_unit
      create    test/controllers/categories_controller_test.rb
      invoke  helper
      create    app/helpers/categories_helper.rb
      invoke    test_unit
      invoke  jbuilder
      create    app/views/categories/index.json.jbuilder
      create    app/views/categories/show.json.jbuilder
      create    app/views/categories/_category.json.jbuilder
7
Varus Septimus

Vous cherchez un échafaudage.

Essayer:

script/generate scaffold Property

Cela vous donnera un contrôleur, un modèle, une migration et des tests associés. Vous pouvez ignorer la migration avec l'option --skip-migration. Si vous ne voulez pas les autres, vous devrez les supprimer vous-même. Ne vous inquiétez pas pour écraser les fichiers existants, cela ne se produira que si vous utilisez --force.

Comme le souligne klew dans les commentaires, cela définit également la méthode body pour vous, pas seulement les noms. Il est très utile d’utiliser comme point de départ pour votre contrôleur REST.

7
molf

Dans Rails 4 c'est Rails g controller apps new create update edit destroy show index

Ou Rails generate controller apps new create update edit destroy show index _ si vous voulez écrire le terme complet :).

5
Tom Hammond

propriété script/generate rspec_scaffold

2
stephenmurdoch

Une solution consiste à créer un script qui accepte un paramètre, le nom du contrôleur, et à laisser le script saisir la commande dans son intégralité.


  1. Créez un nouveau fichier, par exemple, railsgcontroller
  2. Rendez-le exécutable et enregistrez-le sur le chemin
  3. Exécutez-le comme ceci: $ railsgcontroller Articles

die () {
    echo "Please supply new Rails controller name to generate."
    echo >&2 "$@"
    exit 1
}

[ "$#" -eq 1 ] || die "1 argument required, $# provided"

Rails g controller "$1" new create update edit destroy show index
0
philippinedev

Il n’ya aucun moyen (à ma connaissance? Documenté?) De remplacer un contrôleur par un échafaudage. Mais tu pourrais faire:

script/generate controller WhateverController new create edit update destroy show
0
rfunduk