我有一个嵌套的表单,拒绝在DB中插入新记录,尽管父插入正常。毫无疑问是一个显而易见的问题,但有人可以提出建议吗?
父模型:
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-02-13 16:06:53 +0100开始发布127.0.0.1的POST / / deliveries 通过DeliveriesController处理#create as HTML参数: { “UTF8”=&gt; “中✓”, “authenticity_token”=&gt; “中MdNjphnBQaaHdxelT7RnWDNG2XPpDTQipDKAOkT57h0 =”, “orders”=&gt; {“info”=&gt;“1222”},“commit”=&gt;“创建投放”}(0.1ms) 开始事务SQL(2.7ms)INSERT INTO“deliveries” (“created_at”,“updated_at”)VALUES(?,?)[[“created_at”,Wed,13 2013年2月15:06:53 UTC +00:00],[“updated_at”,2013年2月13日,星期三 15:06:53 UTC +00:00]](1.3ms)提交事务重定向到
您可以看到它正在发布订单数据,但它没有正确地将其放入数据库中......我错过了什么?
答案 0 :(得分: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是不同的