Model zaten mevcut olduğunda `raylar iskele oluşturur 'nasıl çalıştırılır?


332

Rails'te yeniyim, bu yüzden mevcut projem garip bir durumda.

Oluşturduğum ilk şeylerden biri "Film" modeliydi. Daha sonra daha ayrıntılı olarak tanımlamaya başladım, birkaç yöntem ekledim vb.

Şimdi rails generate scaffold, yönlendirme, görünümler, kontrolör vb.

İskele oluşturmaya çalıştım, ancak aynı ada sahip bir taşıma dosyasının zaten var olduğunu söyleyen bir hata aldım.

Şimdi "Filmim" için iskele oluşturmanın en iyi yolu nedir? (ray 3'ü kullanarak)


1
Muhtemelen kendi denetleyicilerinizi, görünümlerinizi ve rotalarınızı yazmak en iyisidir. Kavramlar hakkında daha fazla bilgi edineceksiniz
Ben Aubin

1
@ Penne12 ile aynı fikirde. En azından başlangıçta, kavramlardan memnun olana kadar, kodun ne yaptığını bilmek sizin için üretilir.
mydoghasworms

Doğrudan alakalı değil, ancak karışıklık yaşarsanız, yoketmek <etc> raylarını kullanın. Başladığımda bunun gerçekten yararlı olduğunu hatırlıyorum.
Helsing

1
@ BenAubin, doğru olsa da, Rails'in güzelliği sürekli olarak kazan plakası yazmak zorunda değildir.
Romuloux

Yanıtlar:


596

TL; DR :rails g scaffold_controller <name>

Zaten bir modeliniz olsa bile, rails generateseçeneği kullanarak gerekli denetleyici ve geçiş dosyalarını oluşturabilirsiniz . Çalıştırırsanız rails generate -h, kullanabileceğiniz tüm seçenekleri görebilirsiniz.

Rails:
  controller
  generator
  helper
  integration_test
  mailer
  migration
  model
  observer
  performance_test
  plugin
  resource
  scaffold
  scaffold_controller
  session_migration
  stylesheets

Modeliniz için bir denetleyici iskelesi oluşturmak istiyorsanız, bkz scaffold_controller. Sadece netlik için, bununla ilgili açıklama:

İskele denetleyicisini ve görünümlerini saptırır. Model adını CamelCased veya under_scored ve görünümler listesini bağımsız değişken olarak iletin. Denetleyici adı, model adının çoğullanmış bir sürümü olarak alınır.

Bir modül içinde denetleyici oluşturmak için model adını 'parent_module / controller_name' gibi bir yol olarak belirtin.

Bu, uygulama / denetleyicilerde bir denetleyici sınıfı oluşturur ve yardımcı, şablon motoru ve test çerçevesi üreticilerini çağırır.

Kaynağınızı oluşturmak için resourcejeneratörü kullanırsınız ve bir taşıma oluşturmak için migrationjeneratörü de görebilirsiniz (bkz. Tüm bu çılgınlığın bir paterni vardır). Bunlar, kaynak oluşturmak üzere eksik dosyaları oluşturma seçenekleri sunar. Alternatif rails generate scaffoldolarak, --skipvarolan dosyaları atlama seçeneğiyle de çalışabilirsiniz :)

Jeneratörlerin içindeki seçeneklere bakarak biraz zaman geçirmenizi tavsiye ederim. Bunlar, kitaplarda ve benzerlerinde çok iyi belgelendiğini hissetmediğim bir şey, ancak çok kullanışlılar.


12
vay, programlama sorusuna şimdiye kadar aldığım en iyi cevaplardan biri. Teşekkürler!
Lan

12
Ben de mevcut modelleri var ve yapıyor rails generate scaffold_controller MyModelgörünümü katmanı oluşturur ama model öznitelikleri (tablo sütunları) içermez ve bunları elle eklemek zorunda. Bunun için bir düzeltme bilen var mı? Raylardayım 3.2.8.
aaronbartell

@aaronbartell Rails'ten, model özelliklerini önemsemeyen bir 'scaffold_controller' üretmesini istiyorsunuz. Bu kırık değil, bir modelin de oluşturulmasını istiyorsanız generate scaffold, o zaman bir modeliniz varsa, ancak bir iskele denetleyicisi ve istediğiniz bir modele eklenen yeni nitelikler ve scaffold_generatorardından migrationdeğiştirdiğiniz alanlarla birlikte yeni özellikler istiyorsanız
Lee Jarvis

9
@Lee - Hiçbir aaronbartell, scaffold_controller'ın kendisine aktarılan modelin mevcut nitelikleri için karşılık gelen görünüm girişlerini nasıl oluşturduğunu sormuyor, bu geçerli bir soru ... stackoverflow.com/q/17153864/165673
Yarin

67

Büyük cevap Lee Jarvis, bu sadece komut örnektir; zaten Kullanıcı adında mevcut bir modelimiz var:

rails g scaffold_controller User

10
Metin paragraflarını okumak için çok tembel olanlar için teşekkür ederiz!
Chris Cirefice

30

Mevcut veritabanı ile bir raylar uygulaması başlatanlar için schema_to_scaffoldbir iskele komut dosyası oluşturmak için çağrılan serin bir mücevher var . çıktılar:

rails g scaffold users fname:string lname:string bdate:date email:string encrypted_password:string

senin dan schema.rbbizim sizin yeniden adlandırılmış schema.rb. kontrol edin o


2
Bu büyük bir litle mücevher, bana çok yardımcı olacak! Raylar için yerleşik olmalı!
Peter Andersson

13

In Raylar 5 , hala çalıştırabilirsiniz

$rails generate scaffold movie --skip

eksik olan tüm iskele dosyalarını oluşturmak veya

rails generate scaffold_controller Movie

denetleyiciyi oluşturmak ve yalnızca görüntülemek için.

Daha iyi bir açıklama için ray iskelesine bakın



10

Sen yararlanabilir scaffold_controllerve geçmek unutmayın attributesmodelin veya iskele nitelikler olmadan oluşturulur.

rails g scaffold_controller User name email
# or
rails g scaffold_controller User name:string email:string

Bu komut aşağıdaki dosyaları oluşturur:

create  app/controllers/users_controller.rb
invoke  haml
create    app/views/users
create    app/views/users/index.html.haml
create    app/views/users/edit.html.haml
create    app/views/users/show.html.haml
create    app/views/users/new.html.haml
create    app/views/users/_form.html.haml
invoke  test_unit
create    test/controllers/users_controller_test.rb
invoke  helper
create    app/helpers/users_helper.rb
invoke    test_unit
invoke  jbuilder
create    app/views/users/index.json.jbuilder
create    app/views/users/show.json.jbuilder
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.