我有一个处理 2 个模型的表格,Vehiculo 和 Poliza。这就是我现在设置它们的方式:
class Vehiculo < ActiveRecord::Base
has_one :poliza
end
class Poliza < ActiveRecord::Base
belongs_to :vehiculo
end
Vehiculo 上的 create 方法如下所示:
def create
@vehiculo = Vehiculo.new(params[:vehiculo])
@polizadeseguro = Polizadeseguro.new(params[:poliza])
respond_to do |format|
if @vehiculo.save #&& @poliza.save
format.html { redirect_to(@vehiculo, :notice => 'Vehiculo was successfully created.') }
format.xml { render :xml => @vehiculo, :status => :created, :location => @vehiculo }
else
format.html { render :action => "new" }
format.xml { render :xml => @vehiculo.errors, :status => :unprocessable_entity }
end
end
/vehiculos/new 上的表单有一个 @fields_for 部分,其中包含来自 poliza 的字段。当我提交表单时,它会保存所有字段,但不会将刚刚从 vehiculo 创建的 id 分配给 Polizas 表上的 vehiculo_id。在网上阅读了很多关于这个的问题后,它似乎应该根据模型上的关系“自动”保存它。这是真的?如果是这样,为什么它不起作用?如果没有,我需要在 create 方法中添加什么来解决这个问题?
谢谢!
更新:按照这里的建议使用 json 作为输出更新 create 方法后,我得到了:
{
"utf8"=>"✓",
"authenticity_token"=>"tEhNC4J17h+KvNgXv1LLkVyufQwU2uAT18P7msQxiqA=",
"vehiculo"=>{
"marca_id"=>"2",
"modelo_id"=>"4",
"color"=>"Blanco",
"ano"=>"2011",
"chassis"=>"123456789",
"placa"=>"G123456",
"cliente_id"=>"1",
"entaller"=>"0",
"vip"=>"0"
},
"poliza"=>{
"compania"=>"Comp1",
"numeropoliza"=>"736458",
"vencimiento(1i)"=>"2011",
"vencimiento(2i)"=>"9",
"vencimiento(3i)"=>"21"
}
}
那是输出,所以至少它是从表单中获取字段,但它没有将它们插入到 polizas 表中。