Tüm RESTful işlevlerine sahip bir kontrol cihazı oluşturun


86

Tüm RESTful eylemleri stubed olan bir denetleyici oluşturmaya çalışıyorum. Wikibooks - Ruby on Rails'de okumam gereken tek şeyin jeneratörü denetleyici adıyla çağırmak olduğunu okudum ve tam da bunu elde edecektim. Yani koştum script/generate rspec_controller Propertiesama boş bir kontrol cihazım var.

Bir başka öneriniz varsa büyük mutluluk duyacağız.


1
thenduks, Eğer senin kadar deneyimli olsaydım bu doğru olurdu, ama kafamın üstündeki 7 dinlendirici eylemi bile bilmiyorum, bu yüzden öğeyi Google'da aratmam ve sonra sayfa ile sayfam arasında ileri geri geçiş yapmam gerekirdi. her birine girmek için app. Onları tanıdıktan sonra, çözümünüzün daha kolay olduğunu kabul ediyorum
Barb

Yanıtlar:


143

Bunu yapmanın otomatik bir yolunu bilmiyorum, ama yaparsanız:

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

Hepsi senin için yaratılacak

Rails 4 için güncelleme

rails g scaffold_controller Property

7
Mükemmel cevap. Uzmanlar gerisini görmezden gelebilir. Noobs için not - yanlış anladığım gibi denetleyicinize PropertyController adını verirseniz :) PropertyController Controller'ı alacaksınız :)
Barb

2
Cevabım tam olarak aynı şeyi yapıyor - sadece varsayılan 7 eylemin tümünü belirtmeniz gerekmiyor.
konung

4
Sadece bir not ... bu yalnızca temel CRUD eylemleri için adlandırılmış yöntemlerle bir denetleyici oluşturur. Güzergahlar RESTful olmaktan uzak ... örneğin route get "mycontroller/create"(oluşturma bir gönderi olmalıdır)
32'de rthbound

Bu cevabın genel özel eylemler için daha uygun olduğunu kabul ediyorum, aslında istenen RESTful kuralına uymuyor.
prusswan

Bu cevap raylar için güncel değil 4. Konung'un Rails 4 için cevabına bakın.
toobulkeh

97

Rails 3'te de var rails generate scaffold_controller .... Daha fazla bilgi burada .


1
RESTful rotaları oluşturduğu için bu yöntemi tercih ediyorum. Kullanılması , hiç RESTful olmayan rails g controller Foos createbir rota oluşturur get '/create'.
28'de rthbound

37

DÜZENLEME (bazı yorumlardan dolayı) : Asıl soru 2010 yılındaydı - bu nedenle yanıt RAILS 4 için DEĞİL, raylar 2 içindir !!

iskele kullanmayı deneyin.

script/generate scaffold controller Properties

Ruby On Rails'deki Resmi belgelerin bir bölümü

Raylı iskelede bir google araması yaparsanız daha fazla bilgi bulacağınızdan eminim. Umarım yardımcı olur.

DÜZENLEME: RAILS 4 için

rails g scaffold_controller Property


rspec_scaffold denetleyici Özellikleri komut dosyası oluşturabilir / oluşturabilir misiniz?
Barb

Evet yapabilirdin. İşte ayrıntılı bilgi / öğretici: blog.davidchelimsky.net/2007/05/14/…
konung

Bu cevabın Rails'in son sürümleri için güncel olmadığından şüpheleniyorum. Basitçe "denetleyici" adı verilen nesne / model için tam bir yapı iskelesi oluşturacak
prusswan

4
Evet, bu sürüm 2. için 2010'da yazılmıştır. Sorudan aşağıdaki gibi bir şey. Şimdi (Raylar 4) şöyle görünecektir: rails g scaffold_controller Özellik (scaffold_controller iskele çağırır ve model adı sağlamanız gerekir (tekil), ancak bunu yapmak zorunda değilsiniz)
konung

2
rails g scaffold_controller PropertyRay 3.2'de de çalıştığını doğrulayabilirim . Bu, bir model olmadan TÜM 7 varsayılan RESTful eylemleri ve ilgili görünümleriyle bir PropertiesController oluşturacaktır.
mkralla11

15

Rails 4/5'te aşağıdaki komut benim için hile yapıyor.

rails g scaffold_controller Property --skip-template-engine

Denetleyici eylemlerini oluşturdu, ancak görünümü oluşturmadı.


9

Raylar 5.1

Başlangıç ​​noktası:

Denetleyicisiz bir model veya görünümler oluşturdunuz (örneğin: rails generate model category )

Amaç:

Tam bir RESTful kaynağına yükseltin

Komut:

rails generate scaffold_controller category

Yapı iskeleli bir denetleyiciyi, yedi RESTful eylemini ve ilgili görünümleri ortaya çıkarır. (Not: CamelCased veya under_scored model adını geçebilirsiniz.)

Çıktı:

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

İskele arıyorsunuz.

Deneyin:

script/generate scaffold Property

Bu size bir kontrolör, bir model, bir geçiş ve ilgili testleri verecektir. Seçeneği ile geçişi atlayabilirsiniz --skip-migration. Diğerlerini istemiyorsan, onları kendin silmelisin. Mevcut dosyaların üzerine yazma konusunda endişelenmeyin, kullanmadığınız sürece bu olmayacak--force .

Klew'in yorumlarda işaret ettiği gibi, bu aynı zamanda sadece isimleri değil, sizin için yöntem gövdelerini de tanımlar . REST denetleyiciniz için bir başlangıç ​​noktası olarak kullanmak çok yararlıdır.


@Barb, Scaffolding'in sadece tüm fonksiyonları açıklamakla kalmayıp aynı zamanda onları tanımladığı için daha iyi olacağını düşünüyorum. Bunları en az bir kez oluşturmak ve örnek olarak almak iyidir.
klew

6

Rails 4'te rails g controller apps new create update edit destroy show index

Veya rails generate controller apps new create update edit destroy show indextam terimi yazmak istiyorsanız :).


Ve daha uzun bir adı olan denetleyiciler için (line_items gibi), rails g controller LineItems
Tommyixi

1
Sadece rails g scaffold_controller appsRails 4'te kullanabilirsiniz
wrdevos

2

script / rspec_scaffold Özelliği oluştur


ve evet, bununla ilgili bir cevabı zaten kabul ettiğinizi fark ediyorum, ancak bu çözümün bu yazıyı okuyan bazı insanlara da yardımcı olabileceğini düşünüyorum .... yukarıdaki çözüm bir model oluşturacak vb. ihtiyacın yok
stephenmurdoch

0

İskele haricinde bir denetleyiciyi saplamak için (bildiğim kadarıyla? Bu belgelenmiş mi?). Ama yapabilirsin:

script/generate controller WhateverController new create edit update destroy show

Harika cevap, sanırım bir eylemi kaçırıyorsunuz 7 eylem yok mu?
Barb

0

Çözümlerden biri, bir parametreyi, denetleyici adını kabul eden bir komut dosyası oluşturmak ve komut dosyasının sizin için tüm komutu yazmasına izin vermektir.


  1. Yeni bir dosya oluşturun, örneğin railsgcontroller
  2. Çalıştırılabilir hale getirin ve yola kaydedin
  3. Gibi çalıştırın: $ railsgcontroller Makaleler

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.