2015-01-22 2 views
0

두 개의 입력 상자와 하나의 드롭 다운 상자가있는 한 모델에 대한 양식이 있습니다. 여기에 모델의 유형 (및 TypeB)을 선택할 수 있습니다. 기본적으로 이름, 국가, 선택 TypeA와 드롭 다운 상자, a_property_1 및 a_property2에 대한 필드가 표시되어야, 사용자 후두 개의 서로 다른 중첩 모델이 서로 제외 된 양식

// car has columns name and country 
class Car < ActiveRecord::Base 
end 

// has columns a_property_1 and a_property2 
class TypeAProperties < ActiveRecord::Base 
    belongs_to :cars 
end 

// has columns b_property_1 and b_property2 
class TypeBProperties < ActiveRecord::Base 
    belongs_to :cars 
end 

양식을 엽니의이 모델은 같은 것을 말할 수 있습니다.

사용자가 드롭 다운 상자로 이동하여 TypeB을 선택하면 a_property_1 및 a_property2가 화면에서 사라지고 b_property_1 및 b_property2가 화면에 표시됩니다. 따라서 드롭 다운 상자에서 선택한 값에 따라 TypeAProperties 및 TypeBProperties가 만들어집니다. 자동차에는 하나의 속성 A 또는 B 만있을 수 있습니다.

이 상황을 처리하는 방법에 대한 아이디어가 있으십니까? 나는 이것에 조금 붙어있다. 고맙습니다.

+0

두 특정 모델에 대한 공통된 양식 만 표시해야합니까? –

+0

@Marketing, 나는'Car '에 대한 입력 필드와 ('TypeAProperties' 또는'TypeBProperties')에 대한 입력 필드가있는 폼을 보여줄 필요가있다. 옵션 B를 선택하고 TypeBProperties를 무시하면 자동차 및 TypeBProperties 만 작성하는 방법을 잘 모르겠습니다. – user4386126

+0

B 옵션은 어디에 선택합니까? –

답변

0

나는 당신이 그렇게, 바이스 반대를 할 것으로 판단 :

class Cars < ActiveRecord::Base 
    belongs_to :car_type, polymorphic: true 
end 

에서 입력 한 클래스

class TypeAPropertySet < ActiveRecord::Base 
    has_one :car, as: :car_type # or has_many 
end 

class TypeBPropertySet < ActiveRecord::Base 
    has_one :car, as: :car_type # or has_many 
end 

레일 다형성에 document를 참조하십시오

. 그러면 양식의 car_type과 함께 Car 속성을 사용할 수 있습니다.

관련 문제