簡體   English   中英

Rails 4通過關聯和數據庫嵌套表格has_many

[英]Rails 4 Nested form has_many through association and database

所以我有三個模型客戶端,地址和地址信息。 但是,當我為address和address_info創建一個嵌套表單時,我得到的行基本上是我想要的兩倍。 前三行將具有綁定的addresstype和clientid,其他三行將具有與其綁定的clientid和addressid。 這是輸出示例: 在此處輸入圖片說明

如您所見,這些行沒有與該行關聯的地址和客戶端ID。 我不確定該如何解決。

這是我的模型:

#client model
has_many :address_infos
has_many :addresses, through: :address_infos
accepts_nested_attributes_for :addresses, :address_infos, reject_if: :all_blank, allow_destroy: true

#addressinfo model
belongs_to :client
belongs_to :address

#address model
has_many :address_infos
has_many :clients, through: :address_infos

這是我的客戶控制器:

def new
    @client = Client.new
    @client.address_infos.build
    @client.addresses.build
end
def create
    @client = Client.new(client_params)
end
private
    def client_params
        params.require(:client).permit(:firstname, :middlename, :lastname, 
        addresses_attributes: [:street, :city, :state, :zipcode], 
        address_infos_attributes: [:ownorrent, :addresstype, :yearsofresidency])
    end
end

這是我的觀點,請注意,對於郵件和以前的地址,我也沒有嵌套的表格:

 <%= form_for(@client) do |f| %>
    <%= f.fields_for :addresses do |addresses_form| %>
        <!-- misc. code -->
    <%= f.fields_for :address_infos do |addressinfo_form| %> 
        <%= addressinfo_form.label :ownorrent, "Own", :value => "Own" %>
        <%= addressinfo_form.radio_button :ownorrent, :own %>                       
        <%= addressinfo_form.label :ownorrent, "Rent", :value => "Rent" %>
        <%= addressinfo_form.radio_button :ownorrent, :rent %>
        <%= addressinfo_form.text_field :yearsofresidency, class:"form-control", id:"inputfield", placeholder:"Years" %>
        <%= addressinfo_form.text_field :addresstype,:value => "presentaddress" %>
    <% end %>
<% end %>

更新因此,在執行了建議的操作之后,我最終在數據庫中添加了該地址:我嘗試添加的地址是123 Fake St的地址。其他內容直接植入了種子。 address_id仍然與其余內容不符。 我還更新了當前模型。 更新的數據庫

在保存到數據庫之前,應該控制嵌套屬性。 使用reject_ifallow_blank選項可防止和銷毀空白記錄。

accepts_nested_attributes_for :addresses, :address_infos, reject_if: :all_blank, allow_destroy: true

有關控制參數的更多選項,請訪問鏈接http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html

謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM