我正在使用Rails 3.0.3
我有一个模范账单:
class Bill < ActiveRecord::Base
has_many :entries
accepts_nested_attributes_for :entries
end
在我的比尔视图中,我使用嵌套表单在账单中创建新条目,并且使用Javascript我现在插入现有条目,没有bill_id:
$("#row" + nested_form_id).append("<input type='hidden' name='bill[entries_attributes][" + nested_form_id + "][id]' id='bill_entries_attributes_" + nested_form_id + "_id' value='" + id +"' >");
当我提交表单时,我收到此错误:
ActiveRecord::RecordNotFound (Couldn't find Entry with ID=127 for Bill with ID=):
app/controllers/bills_controller.rb:121:in `new'
app/controllers/bills_controller.rb:121:in `create'
所以问题是,当我提交
时,rails正在寻找账单中的条目任何想法如何解决这个问题?
答案 0 :(得分:0)
我无法弄清楚嵌套表单是如何实现的,所以我将已经存在的条目设置为账单:
nested_entries = {}
params[:bill][:entries_attributes] = {}
params[:entries].each_pair do |key, value|
if value[:id].nil?
params[:bill][:entries_attributes][key] = value
else
nested_entries[key] = value
end
end
@bill = Bill.new(params[:bill])
@bill.save
bill_id = @bill.id
nested_entries.each_pair do |key, value|
@entry = Entry.find(value[:id])
value[:bill_id] = bill_id
@entry.update_attributes(value)
end