2015-05-18 31 views
2

在我的應用程序中,Invoice has_many Item。因此,在我的活動管理界面中,我希望能夠創建發票,並同時創建其項目。活動管理員,無法與父母同時創建嵌套資源

但是我只能在invoice使用活動管理中的Edit Invoice按鈕創建之後添加items。試圖一起創建它們不會引導我從New Invoice頁面的任何地方。並沒有顯示任何錯誤。有人可以幫我解決這個問題嗎?

我有以下形式的結構我app/admin/invoice.rb

permit_params :paid, :due, :customer_id, 
       items_attributes: [:price, :description, :invoice_id, :purchased_product_id] 

form multipart: true do |f| 
    f.inputs do 
    input :customer 
    input :due 
    input :paid, as: :radio 
    end 
    f.inputs "Items" do 
    f.has_many :items do |item| 
     item.input :price 
     item.input :description 
     item.input :purchased_product 
    end 
    end 
    f.actions 
end 

我在Invoice模型添加accepts_nested_attributes_for如下:

class Invoice < ActiveRecord::Base 
    belongs_to :customer 
    has_many :items 

    accepts_nested_attributes_for :items, allow_destroy: true 

    validates :customer, presence: true 

我使用Rails 4,和activeadmin '~> 1.0.0.pre1'

+0

如果添加什麼':id'爲'items_attributes'? –

+0

@AndreyDeineko,也沒有工作:(謝謝你的建議,雖然 – hexinpeter

回答

1

問題是在我的Item模型中處理我的驗證。我有以下的驗證規則在我Item模型類

validates :price, :invoice, presence: true 

這是說,爲了創建一個item,它必須有一個invoice連接。但由於在invoice及其包含的items的創建過程中,invoice尚未保存到數據庫。 items找不到要連接的invoice,並且驗證失敗。

問題是通過去除invoice存在驗證解決,以

validates :price, presence: true