2017-10-14 166 views
0

在我的項目中,我有一個Organization模型和一個Address模型。這是該協會beetween型號:如何在rails中保存包含另一個模型屬性的模型?

class Organization < ApplicationRecord 
    has_one :address 
    accepts_nested_attributes_for :address 
end 

class Address < ApplicationRecord 
    belongs_to :organization 
end 

我加入我的新組織形式的地址屬性,像這樣(form_with爲Organization屬性和fields_for爲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 %> 

當我試圖用他的地址保存組織,組織被保存,但他的地址不是。

如何保存組織地址?

這裏是我的OrganizationController:

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 

編輯

的問題是我的看法。我的表單不包含我的field_for部分。

解決方案:

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

其軌道的版本,您正在使用? – shoaib

+1

Rails version 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 –

相關問題