2012-10-29 13 views
7

Jestem nowy w Ruby on Rails. Do tej pory tworzyłem tylko operacje CRUD przy użyciu rusztowań. Teraz potrzebuję zintegrować dwie jednostki w jedną formę za pomocą rusztowania, a nie poprzez twarde kodowanie.Rusztowania złożone w Ruby on Rails

W jaki sposób możemy scalić dwie jednostki razem za pomocą skryptu?

Mam dwie jednostki, Student_address i Student_phnumber. Chcę przekształcić te dwie jednostki w jedną formę, w której mogę wykonywać operacje CRUD, i chcę to osiągnąć przez rusztowanie.

Student_address jest podmiot składający Hse_name, Street_name itp Student_phnumber inny podmiot składający ph_number, typ itp

Chcę rusztowania te dwa podmioty wspólnie.

+0

co masz na myśli, dodając 2 podmioty. Czy możesz być nieco bardziej zrozumiały? – AnkitG

+0

dlaczego r tych facetów w dół głosowania. jeśli zagłosujesz w dół, wyjaśnij przyczynę. – Okky

+1

Myślę, że nie ma mowy. Może musisz to zakodować na twardym dysku! – cortex

Odpowiedz

6

Scaffolding jest niczym więcej niż generator skonfigurować model kompletny zasób podstawowy. Istnieje wiele innych generatorów, innych niż rusztowania, które domyślnie są dostarczane z Railsami. Żadna z nich nie jest skonfigurowana do generowania zasobów dla zestawu powiązanych modeli. Podejrzewam, że duża część tego jest spowodowana szerokim wachlarzem metod wyrażania takiej relacji, co sprawia, że ​​tworzenie ogólnego interfejsu użytkownika jest praktycznie niemożliwe. Ponadto rusztowanie jest bardziej skonfigurowane, abyś mógł szybko zacząć pracę, z zamiarem modyfikacji w zależności od potrzeb. Modyfikacje te są zwykle dość zaangażowane w przypadku każdej nietrywialnej aplikacji. Istnieje wiele generatorów stron trzecich, w tym popularnego nifty generators, ale żaden z nich nie tworzy tego rodzaju kodu, który chcesz wygenerować, o ile wiem. Jeśli jest to relacja, którą trzeba często konfigurować, można rozważyć utworzenie własnego generatora, który będzie obsługiwał zadanie - w rzeczywistości jest to dość łatwe. Dobrym sposobem na to jest wdrożenie idealnego przypadku, a następnie utworzenie z niego generatora.

Edit:

Ponadto, możesz dostosować nazwy zmiennej/atrybutów. Powinny być małe i podkreślone, aby Street_name stał się street_name. Arbitralne skróty również utrudniają kodowanie/utrzymywanie, więc lepiej byłoby wyrazić je jako student_phone_number. Powodem tego jest, poza konsekwencją (np. ph_number vs Student_phnumber), że Railsy faktycznie używają obudowy i odstępów w internal methods like these.

0

Czy tego właśnie szukasz?

rails generate scaffold Student student_address:string student_phnumber:string

+0

no Student_address jest jednostką składającą się z Hse_name, Street_name, itp. Student_phnumber inny podmiot składający się z ph_number, type, itp. Chcę przemontować te dwie jednostki razem – Okky

2

Pozwól mi zobaczyć, czy cię rozumiem.

Relacja modelu/podmiot opisujesz brzmi:

student 
    address 
    - house_name 
    - street_name 
    - etc 
    phone_number 
    - number 
    - area_code 
    - etc 

Chcecie:

a) automatycznie wygenerować modelom

b) automatycznie generuje kontrolera/widoku z formularza utworzyć ucznia, w tym pola do ustawienia adresu i numeru telefonu:

OK. b) nie można tego zrobić przez rusztowanie Railsowe. Możesz jednak skorzystać z klejnotu ActiveSupport (docs here), aby to osiągnąć.Oto co trzeba zrobić:

gem install active_scaffold 
rails g active_scaffold Student name:string 
rails g active_scaffold PhoneNumber area_code:integer number:integer student_id:integer 
rails g active_scaffold Address first_line:string second_line:string student_id:integer 

Jedyna praca ręczna musisz zrobić tutaj jest pop w modelach i dodać relacje:

Address 
belongs_to :student 
PhoneNumber 
belongs_to :student 
Student 
has_one :address 
has_one :phone_number 

Co ActiveScaffold zrobi jest automatycznie produkować dla Państwo widok tak:

enter image description here

Fill w tej formie, a twoje modele będą wszystkie SAV ed i połączone razem!