Hasilkan pengontrol dengan semua fungsi RESTful


86

Saya mencoba menghasilkan pengontrol dengan semua tindakan RESTful yang dihentikan. Saya telah membaca di Wikibooks - Ruby on Rails bahwa yang perlu saya lakukan hanyalah memanggil generator dengan nama pengontrol dan saya akan mendapatkannya. Jadi, saya berlari script/generate rspec_controller Propertiestetapi mendapat pengontrol kosong.

Saran lain akan sangat dihargai.


1
thenduks, Jika saya berpengalaman seperti Anda itu akan benar, tetapi saya bahkan tidak tahu 7 tindakan tenang dari atas kepala saya jadi saya harus google item dan kemudian beralih antara halaman dan halaman saya. aplikasi untuk memasukkan masing-masing. Setelah saya mengenal mereka, saya setuju bahwa solusi Anda lebih mudah
Barb

Jawaban:


143

Saya tidak tahu tentang cara otomatis untuk melakukannya, tetapi jika Anda melakukannya:

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

Semuanya akan dibuat untuk Anda

Pembaruan untuk Rails 4

rails g scaffold_controller Property

7
Jawaban Hebat. Para ahli dapat mengabaikan sisanya. Catatan untuk noobs - jika Anda menamai controller Anda PropertyController seperti yang saya salah paham :) Anda akan mendapatkan PropertyController Controller :)
Barb

2
Jawaban saya melakukan hal yang persis sama - kecuali Anda tidak perlu menentukan semua dari 7 tindakan default.
konung

4
Hanya catatan ... ini hanya menghasilkan pengontrol dengan metode yang dinamai untuk tindakan CRUD dasar. Rute jauh dari RESTful ... misalnya route get "mycontroller/create"(buat harus menjadi pos)
rth

Saya setuju bahwa jawaban ini lebih cocok untuk tindakan kustom umum, tidak benar-benar menghormati konvensi RESTful yang diinginkan.
prusswan

Jawaban ini ketinggalan jaman untuk rel 4. Lihat jawaban konung untuk Rails 4.
toobulkeh

97

Di Rails 3 juga ada rails generate scaffold_controller .... Info selengkapnya di sini .


1
Saya lebih suka metode ini karena menghasilkan rute RESTful. Menggunakan rails g controller Foos createakan menghasilkan rute get '/create'yang tidak tenang sama sekali.
r tanggal

37

EDIT (karena beberapa komentar) : Pertanyaan asli adalah pada tahun 2010 - maka jawabannya BUKAN untuk RAILS 4, tetapi untuk rail 2 !!

coba gunakan perancah.

script/generate scaffold controller Properties

Bagian dari dokumen resmi di Ruby On Rails

Saya yakin Anda dapat menemukan info lebih lanjut jika Anda melakukan pencarian google pada perancah rel. Semoga membantu.

EDIT: Untuk RAILS 4

rails g scaffold_controller Property


dapatkah Anda membuat skrip / menghasilkan Properti pengontrol rspec_scaffold?
Barb

ya kamu bisa Berikut detail info / tutorialnya: blog.davidchelimsky.net/2007/05/14/…
konung

Saya menduga jawaban ini sudah ketinggalan zaman untuk versi terbaru Rails. Ini hanya akan membuat seluruh perancah untuk objek / model yang disebut "controller"
prusswan

4
Ya itu ditulis pada tahun 2010 untuk versi 2. Sesuatu sebagai berikut dari pertanyaan. Sekarang (Rails 4) akan terlihat seperti ini: rails g scaffold_controller Property (scaffold_controller akan memanggil scaffolding dan Anda perlu memberikan nama model (tunggal), tetapi tidak harus)
konung

2
Saya dapat memverifikasi bahwa rails g scaffold_controller Propertybekerja di rel 3.2 juga. Ini akan membuat PropertiesController dengan SEMUA 7 tindakan RESTful default dan tampilan masing-masing, tanpa model.
mkralla11

15

Di Rails 4/5, perintah berikut melakukan trik untuk saya.

rails g scaffold_controller Property --skip-template-engine

Ini menghasilkan tindakan pengontrol tetapi bukan tampilan.


9

Rel 5.1

Titik pangkal:

Anda telah menciptakan model tanpa controller, atau pandangan (misalnya melalui: rails generate model category)

Objektif:

Tingkatkan ke sumber daya RESTful penuh

Perintah:

rails generate scaffold_controller category

Ini mematikan pengontrol perancah, tujuh tindakan RESTful dan tampilan terkait. (Catatan: Anda dapat mengirimkan nama model CamelCased atau under_scored.)

Keluaran:

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

Anda sedang mencari perancah.

Mencoba:

script/generate scaffold Property

Ini akan memberi Anda pengontrol, model, migrasi dan tes terkait. Anda dapat melewati migrasi dengan opsi --skip-migration. Jika Anda tidak menginginkan yang lain, Anda harus menghapusnya sendiri. Jangan khawatir tentang menimpa file yang sudah ada, itu tidak akan terjadi kecuali Anda menggunakannya --force.

Seperti yang ditunjukkan klew di komentar, ini juga mendefinisikan badan metode untuk Anda, bukan hanya nama. Ini sangat membantu untuk digunakan sebagai titik awal untuk pengontrol REST Anda.


@ Barb, saya pikir Scaffolding akan lebih baik untuk Anda karena tidak hanya mendeklarasikan semua fungsi tetapi juga mendefinisikannya. Adalah baik untuk membuatnya setidaknya sekali dan menjadikannya sebagai contoh.
klew

6

Di Rails 4 itu rails g controller apps new create update edit destroy show index

Atau rails generate controller apps new create update edit destroy show indexjika Anda ingin menulis istilah lengkapnya :).


Dan untuk pengontrol dengan nama yang lebih panjang (seperti line_items), rel g pengontrol LineItems
Tommyixi

1
Anda bisa menggunakan rails g scaffold_controller appsdi Rails 4
wrdevos

2

script / menghasilkan Properti rspec_scaffold


dan ya, saya menyadari bahwa Anda telah menerima jawaban untuk yang satu ini, tetapi saya merasa solusi ini dapat membantu beberapa orang yang membaca posting ini juga .... solusi di atas akan membuat model dll, yang dapat Anda hapus jika Anda tidak perlu
stephenmurdoch

0

Tidak ada cara (yang saya ketahui? Yang didokumentasikan?) Untuk mematikan pengontrol kecuali melalui perancah. Tapi Anda bisa melakukan:

script/generate controller WhateverController new create edit update destroy show

Jawaban bagus, saya pikir Anda melewatkan satu tindakan, bukankah ada 7 tindakan?
Barb

0

Salah satu solusinya adalah membuat skrip yang menerima satu parameter, nama pengontrol, dan biarkan skrip mengetikkan seluruh perintah untuk Anda.


  1. Buat file baru, katakanlah, railsgcontroller
  2. Jadikan itu dapat dieksekusi dan simpan di jalur
  3. Jalankan seperti: $ 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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.