2013-02-13 40 views
1

我有一个嵌套的表单,它拒绝向数据库中插入新记录,尽管父插入正常。无疑是一个明显的,但有人可以建议为什么?嵌套表单没有插入到数据库中?

父模型:

class Delivery < ActiveRecord::Base 
    attr_accessible :orders_attributes 
    has_many :orders, as: :orderable 
    accepts_nested_attributes_for :orders 

嵌套模式

class Order < ActiveRecord::Base 
    attr_accessible :info 
    belongs_to :orderable, polymorphic: true 
    belongs_to :delivery 

父控制器

def new 
    @delivery = Delivery.new 
    order = @delivery.orders.build 

    respond_to do |format| 
     format.html # new.html.erb 
     format.json { render json: @delivery } 
    end 
    end 

形式

= form_for @delivery do |f| 

    = fields_for :orders do |builder| 
    = builder.label :info 
    = builder.text_area :info 
    .actions 
    = f.submit 

输出:

在2013年2月13日16时06分53秒0100 处理由DeliveriesController#发起者POST “/交付” 为127.0.0.1创建以HTML参数: { “UTF8”=> “✓”, “authenticity_token”=>“MdNjphnBQaaHdxelT7RnWDNG2XPpDTQipDKAOkT57h0 =”, “orders”=> {“info”=>“1222”},“commit”=>“Create Delivery”}(0.1ms) begin transaction SQL (2.7ms)INSERT INTO“deliveries” (“created_at”,“updated_at”)VALUES(?,?)[[“created_at”,Wed,13 Feb 2013 15:06:53 UTC +00:00],[ “updated_at”,2013年2月13日,星期三 15:06:53 UTC +00:00]](1.3ms)commit transaction Redir反映到

您可以看到它发布了订单数据,但它没有正确地将其放入数据库中......我错过了什么?

回答

2

我认为你需要

form_for @delivery do |f| 

    = f.fields_for :orders do |builder| 
    = builder.label :info 
    = builder.text_area :info 
    .actions 
    = f.submit 

通知f.fields_for是不同

+0

这个工作,非常感谢! – Nick 2013-02-13 15:28:22

+0

欢迎您 - 我看到您在这里相当新,所以可能不知道您应该接受任何您认为是正确的答案。这有助于其他使用Google的人,并增强了答案的声誉。 – chrispanda 2013-02-13 15:36:43

+0

完成 - 由于某种原因,它不会让我做10分钟,但它现在已经奏效! – Nick 2013-02-13 15:41:03