2016-03-08 51 views
0

我正在使用rails 4.2.4,Ruby 2.2.1p85和MySQL 5.5。Rails複雜形式由於父ID爲空而無法保存

我有一個問題,因爲父對象的ID爲空,導致複雜的形式保存。它的空白當然還沒有創建。我有一個已經在數據庫中的國家列表,並且正在嘗試將一個添加到新創建的設施。每個設施都屬於一個國家。該設施是父窗體和fields_for包含以下內容:

<%= f.fields_for :country do |country| %> 
<div class="form-group"> 
    <%= country.label :Country, 'Facility Country:' %> 
    <%= country.select :id, options_from_collection_for_select(@countries, 
     "id", "name"), {include_blank: "Select a Country..."}, {class: "form-control"} %> 
</div> 

以下是錯誤: 的ActiveRecord :: RecordNotFound在BbcFacilitiesController#創建 無法與ID與ID = 3找到BbcCountry爲BbcFacility =

#POST /facilities.json DEF創建 @facility = Facility.new(facility_params)

respond_to do |format| 
    if @facility.save 

它在params對象中獲取正確的國家ID,但由於該設施尚未創建,因此它不知道該如何操作。它只是試圖在設施中保存一個空白的ID。我該如何解決這個問題?謝謝。

回答

0

嘗試手動設置的國家ID的@facility.save之前,停止ActiveRecord的尋找與全國加盟的設施。爲了正確確定,嘗試從params中刪除「country_attributes」鍵。

它應該是這樣的:大約剝離出來的國家屬性的補充說明:

country_attr = facility_params.delete "country_attributes" 
@facility = Facility.new(facility_params) 
@facility.country_id = country_attr["id"] 

編輯。

+0

這會導致相同的問題。問題發生在這條線: @facility = Facility.new(facility_params) – user2593486

+0

哦,順便說一句,在COUNTRY_ID已經存在於params對象,它的設施是不可少的。設置國家ID不會有任何影響。 – user2593486

+0

Hmn,您可以粘貼服務器日誌中相關POST請求的內容嗎?所以我們可以看到你有什麼參數的例子。 – digitalWestie

相關問題