1

깊이 중첩 된 형태를 구현하는 프로젝트에서 레일 4.0과 함께 고치를 사용하고 싶습니다. 나는 사람이나 조직과 연관 될 수있는 파티 모델을 가지고있다. (단순함을 위해 여기에 포함되지 않기 때문에 파티는 기본 키를 가진다.)깊게 중첩 된 형태의 고치

각 당사자는 복수 postal_addresses, telecommunications_numberselectronic_addresses을 가질 수 있어야합니다.

이들 각각

그 때문에 여러 명과

사이에 공유 할 수 있습니다 :

partyhas many communication_mechanisms :through => party_contact_mechanisms

party_contact_mechanismbelongs_to partybelongs_to contact_mechanism

contact_mechanismhas_many electronic_addresses, has_many telecommunications_numbershas_many postal_addresses (에만이 포함되어 electronic_addresses 전의 충분하고 샘플 응용 프로그램에서)

(의 각 인스턴스는 electronic_address, postal_address 또는 telecommunications_number 중 하나만 있어야합니다. has_man Y의 관계는 테스트를 위해 선택되었다과 중첩 작업하면 나중에 변경됩니다)

는 내가 구현하려는 것은 나는 가능한 한 작은 번의 클릭으로 여러 contact_mechanisms을 추가 할 수있는 중첩 된 형태이다.

그래서 나는 전자 메일 링크, 우편 링크 및 전화 링크가 있어야한다. 따라서 전자 메일의 경우 contact_mechanisms 양식에 포장 된 electronic_addresses에 대한 동적 양식을 party_contact_mechanisms에 대한 양식으로 추가하려면 누에 고치 링크가 있어야합니다. 그런 식으로 양식을 제출할 때 모든 관계가 자동으로 설정됩니다. 해당 설정 (파티 # 새 이메일 버튼)을 사용하면 party_contact_mechanism에 연결된 contact_mechanims에 연결된 electronic_address을 만들지 못하는 다음 params_hash가 제출됩니다. 생성 체인은 party_contact_mechanims에서 중단되며 party_id으로 생성되지만 contact_mechanism_id은 생성되지 않습니다.

Parameters: {"utf8"=>"✓", "authenticity_token"=>"pyT1zgKlRBJgtBC/LGCNEaOcsPZxlmc5zEO3xd/THlg=", "party"=>{"party_contact_mechanisms_attributes"=>{"1373896051610"=>{"from_date(1i)"=>"2013", "from_date(2i)"=>"7", "from_date(3i)"=>"15", "thru_date(1i)"=>"2013", "thru_date(2i)"=>"7", "thru_date(3i)"=>"15", "contact_mechanisms"=>{"electronic_addresses"=>{"electronic_address_string"=>"[email protected]"}}}}}, "commit"=>"Save"} 

그것은 구축되지 않는 contact_mechanismelectronic_address의 인스턴스와 할당 된 값을 보인다. 그래서 party_contact_mechanism에 대한 양식을 삽입하고 중첩 된 contact_mechanimselectronic_address을 인스턴스화하는 방법이 필요합니다.

이 양식을 구현하는 두 번째 가능성은 belongs_to 관계 (https://github.com/nathanvda/cocoon/wiki/A-guide-to-doing-nested-model-forms#the-look-up-or-create-belongs_to)에 대한 누에 고치 예제를 따르며 "PCM"단추를 사용하여 테스트 할 수 있습니다. 이 방법을 사용하면 먼저 party_contact_mechanism 양식을 추가하고 기존 contact_mechanism을 선택하거나 다시 클릭하여 contact_mechanism을 새로 만듭니다.

그러나 contact_mechanism에 중첩 된 양식을 추가하는 링크는 표시되지 않습니다.

나는 검토를 위해 GitHub의에 샘플 응용 프로그램이 있습니다

Sample application for this question

가장이 데이터 모델을 구현하는 방법에 어떤 도움

가 대단히 감사합니다.

답변

0

죄송 합니다만, 모든 중첩 된 속성의 shoud는 accepts_nested_attributes_for에 의해 추가 된 params hash에 "_attributes"접미사가 있다는 것을 알고 있습니다.

죄송합니다.

0

link_to_add_association에서 wrap_object 옵션을 사용하여 추가 연결을 구축 할 수 있습니다. fields_for을 사용하는 경우 각 연결에 대해 새 인스턴스가 필요합니다.

# I'm using a helper because code looks messy in the view 
def link_to_add_party_contact_mechanism(form) 
    wrap_object = proc do |party_contact_mechanism| 
    party_contact_mechanism.build_contact_mechanism 
    party_contact_mechanism 
    end 

    link_to_add_association "Add...", form, :party_contact_mechanisms, wrap_object: wrap_object 
end 
:

는 예를 들어, 귀하의 경우에 당신은 당신이이 같은 도우미를 호출해야합니다 형태로 표시 contact_mechanism를 원하는 경우

관련 문제