2009-10-08 106 views
1
class Bill < ActiveRecord::Base 
    has_many :invoices 
end 

class Invoice < ActiveRecord::Base 
    belongs_to :bill 
end 

然後在我的形式,我有發票幾個領域都具有名稱bill[invoice_names][],所以我可以從params[:bill][:invoice_names]訪問它們。保存的has_many記錄上創建belongs_to的記錄

目前,我已經有了這樣的方法對我的比爾型號:

#bill.rb 
def save_invoices(invoices) 
    if invoices 
    invoices.each do |invoice| 
     @invoice = Invoice.new 
     @invoice.invoice = invoice 
     @invoice.bill_id = self.id 
     @invoice.save 
    end 
    end 
end 

然後調用它bills_controller的像這樣的創建方法:

#bill_controller.rb 
def create 
    @bill = Bill.new(params[:bill]) 

    respond_to do |format| 
    if @bill.save 
     @bill.save_invoices(params[:bill][:invoice_names]) 
     flash[:notice] = 'Bill was successfully created.' 
     # ... 
    else 
     # ... 
    end 
    end 
end 

由於導軌是通常不可思議,我嘗試命名字段bill[invoices][],並且交叉着我的手指,希望它可以在沒有額外代碼的情況下同時創建這些記錄。它沒有工作,所以我寫了save_invoices方法,並且必須將字段重命名爲bill[invoices][]以外的內容,因爲這給了我一個錯誤。

有沒有更好的方法來做到這一點?

回答

3

聽起來像你正在尋找nested forms。在Rails 2.3中引入,我看到了some criticism of them,所以請確保您閱讀並權衡選項。

+0

是的......謝謝。 – 2009-10-08 06:03:57