2017-10-14 6 views
0

내 프로젝트에는 Organization 모델과 Address 모델이 있습니다. 내가 노력하고 때레일에 다른 모델의 특성을 포함하는 모델을 저장하는 방법은 무엇입니까?

<%= form_with(model: organization, local: true) do |form| %> 

    <div class="field"> 
    <%= form.label :organizationName %> 
    <%= form.text_field :organizationName, id: :organization_organizationName %> 
    </div> 

    <div class="field"> 
    <%= form.label :email %> 
    <%= form.text_field :email, id: :organization_courriel %> 
    </div> 

    <div class="field"> 
    <%= form.label :webSite %> 
    <%= form.text_field :webSite, id: :organization_webSite %> 
    </div> 

    <%= fields_for :adresse, organization.address do |address_fields| %> 
     Street number: <%=address_fields.text_field :streetNumber%><br> 
     Street: <%=address_fields.text_field :street%><br> 
     City: <%=address_fields.text_field :city%><br> 
     Province: <%=address_fields.text_field :province%><br> 
     Postal code: <%=address_fields.text_field :postalCode%><br> 
    <% end %> 

    <div class="actions"> 
    <%= form.submit %> 
    </div> 
<% end %> 

: 나는 주소이 (Address 속성 Organization 속성 form_with와 fields_for)처럼 내 새로운 조직 형태로 속성을 추가

class Organization < ApplicationRecord 
    has_one :address 
    accepts_nested_attributes_for :address 
end 

class Address < ApplicationRecord 
    belongs_to :organization 
end 

다음은 모델 beetween 협회입니다 자신의 주소로 orginization을 저장하려면 조직은 저장되지만 주소는 저장되지 않습니다.

어떻게 조직의 주소를 저장합니까? 문제는 내보기이었다

def new 
    @organization = Organization.new 
    @organization.build_address 
end 

def create 
    @organization = Organization.new(organization_params) 
    @organization.save 
    //... 
end 

def organization_params 
    params.require(:organization).permit(:organizationName, :email, :webSite, address_attributes:[:streetNumber, :street, :city, :province, :postalCode]) 
end 

편집 :

여기 내 OrganizationController입니다. 내 양식에 field_for 섹션이 없습니다.

솔루션 :

<%=form.field_for :address do |address_fields| %> 

+0

사용중인 레일의 버전? – shoaib

+1

레일즈 버전 5.1.4 –

+0

'ApplicationRecord'의 철자가 잘못되었습니다. 그것의'ActiveRecord :: Base' – Cyzanfar

답변

1
belongs_to :address, optional: true 
params.require(:organization).permit(:name,address_attributes: [:id,:city]) 
+0

나는 나의 조직과 함께 매번 그 주소를 저장할 수 있기를 원한다. 필자의 경우 주소는 선택 사항이 아닙니다. –

+0

조직이 주소와 주소가 belongs_to 인 조직에서 변경할 수 있습니까? – shoaib

+0

방금했는데 여기에 뭔가있는 것 같아요 : https://stackoverflow.com/questions/34863818/rails-one-form-to-two-models?rq=1 –