2017-10-14 8 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関連があります彼の住所でオルガンを保存するには、組織は保存されていますが、彼のアドレスは保存されていません。

組織の住所を保存するにはどうすればよいですか?問題は、私の見解だった

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 

EDIT:

は、ここに私のOrganizationControllerです。私のフォームにはfield_forセクションは含まれていませんでした。

解決策:使用しているレールのバージョン

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

+0

? – shoaib

+1

Railsバージョン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

組織が住所と所属の所属組織にあるように変更できますか? – shoaib

+0

私はちょうどそれをやったし、私は何かここにいると思う:https://stackoverflow.com/questions/34863818/rails-one-form-to-two-models?rq=1 –

関連する問題