【问题标题】:active admin, cannot create nested resource at the same time as the parent活动管理员,不能与父级同时创建嵌套资源
【发布时间】:2015-05-18 10:19:16
【问题描述】:

在我的应用程序中,Invoice has_many Item。因此,在我的活动管理 UI 中,我希望能够创建发票,同时创建其项目。

但我只能在使用活动管理员中的Edit Invoice 按钮创建invoice 后添加items。尝试将它们一起创建不会将我从New Invoice 页面引导到任何地方。并且没有显示任何错误。有人可以帮我解决这个问题吗?

我的app/admin/invoice.rb中有以下表单结构

permit_params :paid, :due, :customer_id,
              items_attributes: [:price, :description, :invoice_id, :purchased_product_id]

form multipart: true do |f|
  f.inputs do
    input :customer
    input :due
    input :paid, as: :radio
  end
  f.inputs "Items" do
    f.has_many :items do |item|
      item.input :price
      item.input :description
      item.input :purchased_product
    end
  end
  f.actions
end

我在Invoice 模型中添加了accepts_nested_attributes_for,如下所示:

class Invoice < ActiveRecord::Base
  belongs_to :customer
  has_many :items

  accepts_nested_attributes_for :items, allow_destroy: true

  validates :customer, presence: true

我正在使用 Rails 4,activeadmin '~&gt; 1.0.0.pre1'

【问题讨论】:

  • 如果将:id 添加到items_attributes 会怎样?
  • @AndreyDeineko,也没有用 :( 不过感谢您的建议

标签: ruby-on-rails ruby activerecord gem activeadmin


【解决方案1】:

问题是在我的Item 模型中处理我的验证。我的Item 模型类中有以下验证规则

validates :price, :invoice, presence: true

这表示为了创建一个item,它必须连接一个invoice。但由于在invoice 及其包含的items 的创建过程中,invoice 尚未保存到数据库中。 items 还找不到要连接的invoice,验证失败。

通过删除invoice的存在验证来解决问题,以

validates :price, presence: true

【讨论】:

    猜你喜欢
    • 2017-07-15
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多