【问题标题】:Nested form not inserting into DB?嵌套表单未插入数据库?
【发布时间】:2013-02-13 15:21:11
【问题描述】:

我有一个嵌套表单,它拒绝将新记录插入数据库,尽管父级插入正常。毫无疑问,这是一个显而易见的问题,但有人能告诉我为什么吗?

父模型:

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 作为 HTML 参数处理: {"utf8"=>"✓", "authenticity_token"=>"MdNjphnBQaaHdxelT7RnWDNG2XPpDTQipDKAOkT57h0=", "orders"=>{"info"=>"1222"}, "commit"=>"Create Delivery"} (0.1ms) 开始事务 SQL (2.7ms) INSERT INTO "deliveries" ("created_at", "updated_at") 值 (?, ?) [["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) 提交事务重定向到

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

【问题讨论】:

    标签: ruby-on-rails nested-forms nested-attributes


    【解决方案1】:

    我认为你需要

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

    注意 f.fields_for 是不同的

    【讨论】:

    • 不客气 - 我看到你在这里相当新,所以可能不知道你应该接受你认为正确的答案。这有助于其他使用谷歌搜索的人,并提高答案的声誉。
    • 完成 - 由于某种原因,它不会让我在 10 分钟内完成它,但它现在已经奏效了!
    • 犯了同样的错误。好收获!
    猜你喜欢
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 2019-05-18
    • 2013-05-09
    • 2014-06-21
    • 2014-04-04
    • 2020-02-06
    • 1970-01-01
    相关资源
    最近更新 更多