すべてのRESTful関数を備えたコントローラーを生成します


86

すべてのRESTfulアクションをスタブ化したコントローラーを生成しようとしています。私はウィキブックスで読んだことがあります-Rubyon Railsは、コントローラー名を使用してジェネレーターを呼び出すだけで、それを取得できます。それで、私は走りましscript/generate rspec_controller Propertiesたが、空のコントローラーを手に入れました。

他の提案をいただければ幸いです。


1
thenduks、もし私があなたと同じくらい経験を積んでいたら、それは本当だろうが、頭のてっぺんからの7つの安らかな行動すら知らないので、アイテムをグーグルで検索してから、ページと私のそれぞれを入力するアプリ。私がそれらを知ったら、私はあなたの解決策がより簡単であることに同意します
バーブ

回答:


143

自動化された方法についてはわかりませんが、もしそうなら:

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

それらのすべてがあなたのために作成されます

Rails4のアップデート

rails g scaffold_controller Property

7
素晴らしい答え。専門家は残りを無視することができます。初心者への注意-私が誤解しているようにコントローラーにPropertyControllerという名前を付けると、PropertyControllerコントローラーが表示されます:)
Barb

2
私の答えはまったく同じことをします-デフォルトの7つのアクションすべてを指定する必要がないことを除いて。
konung 2010年

4
注...これは、基本的なCRUDアクションに名前が付けられたメソッドを持つコントローラーのみを生成します。ルートはRESTfulからはほど遠いです...例route get "mycontroller/create"(作成は投稿である必要があります)
rthbound 2012年

この回答は一般的なカスタムアクションに適していることに同意します。実際には、必要なRESTful規則を尊重していません。
prusswan 2013

この回答はRailsの4のレール4を参照してくださいkonungの答えのために古くなっ
toobulkeh

97

Rails3にはもありrails generate scaffold_controller ...ます。詳細はこちら


1
RESTfulルートを生成するため、この方法を好みます。を使用rails g controller Foos createすると、get '/create'RESTfulではないルートが生成されます。
rthbound 2012年

37

編集(いくつかのコメントによる):元の質問は2010年でした-したがって、答えはRAILS 4ではなく、Rails2です!!

足場を使ってみてください。

script/generate scaffold controller Properties

Ruby OnRailsの公式ドキュメントのセクション

Railsの足場でグーグル検索を行うと、より多くの情報を見つけることができると確信しています。お役に立てば幸いです。

編集: RAILS4の場合

rails g scaffold_controller Property


rspec_scaffoldコントローラーのプロパティをスクリプト化/生成できますか?
バーブ

はい、できます。詳細な情報/チュートリアルは次のとおり
konung

この回答は、最近のバージョンのRailsでは古くなっていると思います。「コントローラー」と呼ばれるオブジェクト/モデルのスキャフォールド全体を作成するだけです
prusswan 2013

4
はい、それはバージョン2のために2010年に書かれました。質問から次のようなものです。これで(Rails 4)次のようになります。railsgscaffold_controllerプロパティ(scaffold_controllerはscaffoldを呼び出すため、モデル名(単数)を指定する必要がありますが、指定する必要はありません)
konung 2013

2
Rails3.2でも動作することを確認できrails g scaffold_controller Propertyます。これにより、モデルなしで、7つすべてのデフォルトのRESTfulアクションとそれぞれのビューを持つPropertiesControllerが作成されます。
mkralla11 2013

15

Rails 4/5では、次のコマンドでうまくいきます。

rails g scaffold_controller Property --skip-template-engine

コントローラアクションは生成されましたが、ビューは生成されませんでした。


9

Rails 5.1

出発点:

あなたは(例えばスルー:コントローラなしのモデル、またビューを作成しましたrails generate model category

目的:

完全なRESTfulリソースにアップグレードします

コマンド:

rails generate scaffold_controller category

スキャフォールドコントローラー、7つのRESTfulアクション、および関連するビューをスタブアウトします。(注:モデル名CamelCasedまたはunder_scoredのいずれかを渡すことができます。)

出力:

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

あなたは足場を探しています。

試してみてください:

script/generate scaffold Property

これにより、コントローラー、モデル、移行、および関連するテストが提供されます。オプションを使用すると、移行をスキップできます--skip-migration。他の人が欲しくない場合は、自分で削除する必要があります。を使用しない限り、既存のファイルの上書きについて心配する必要はありません--force

klewがコメントで指摘しているように、これは名前だけでなく、メソッド本体も定義します。RESTコントローラーの開始点として使用すると非常に便利です。


@Barb、スキャフォールディングはすべての関数を宣言するだけでなく、それらを定義するので、あなたにとってより良いと思います。少なくとも1回は作成し、例として使用することをお勧めします。
2010年

6

Rails4では rails g controller apps new create update edit destroy show index

またはrails generate controller apps new create update edit destroy show index、全文を書きたい場合:)。


また、より長い名前のコントローラー(line_itemsなど)の場合、rails g controller LineItems
Tommyixi 2015年

1
rails g scaffold_controller appsRails 4
wrdevos 2015

2

スクリプト/生成rspec_scaffoldプロパティ


はい、あなたはすでにこれに対する答えを受け入れていると思いますが、この解決策はこの投稿を読んだ人にも役立つかもしれないと思います...上記の解決策はモデルなどを作成します。あなたは必要ありません
stephenmurdoch 2010年

0

足場を経由する以外に、コントローラーをスタブアウトする方法はありません(私が知っていますか?それは文書化されていますか?)。しかし、あなたはできる:

script/generate controller WhateverController new create edit update destroy show

素晴らしい答えです。アクションが欠落していると思います。7つのアクションはありませんか?
バーブ

0

1つの解決策は、1つのパラメーター、コントローラー名を受け入れるスクリプトを作成し、スクリプトにコマンド全体を入力させることです。


  1. たとえば、railsgcontrollerなどの新しいファイルを作成します
  2. 実行可能にし、パスに保存します
  3. 次のように実行します:$ 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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.