这些是我的模特:
Product.rb :
class Product < ApplicationRecord
belongs_to :position
has_many :products_sizes
has_many :sizes, through: :products_sizes
has_many :reviews, dependent: :destroy
accepts_nested_attributes_for :products_sizes
end
Products_size.rb :
class ProductsSize < ApplicationRecord
belongs_to :product
belongs_to :size
has_many :prices
accepts_nested_attributes_for :prices
end
Size.rb :
class Size < ApplicationRecord
has_many :products_sizes
has_many :products, through: :products_sizes
end
和 Price.rb :
class Price < ApplicationRecord
belongs_to :products_size
end
在ActiveAdmin中我需要为Product创建一个表单,因为当我更新产品时,我可以创建一个Price,因此表单的一部分看起来像这样:
... #here is the begining of the form
f.inputs 'Sizes' do
f.semantic_fields_for ProductsSize.where(product_id: params[:id], size_id: Product.find(params[:id]).products_sizes.size.to_i).first.prices.new do |ps|
ps.input :products_size_id, label: 'Size', as: :select, collection: Product.find(params[:id]).sizes.map { |s| ["#{s.title}", s.id] }
ps.input :quantity
ps.input :amount
li do
link_to 'Add size', '#'
end
end
end
一切似乎都很好,除非单击提交按钮,否则不会创建价格。我想,那是因为没有为permit_params
指定price
。我该如何指定它们?感谢。
答案 0 :(得分:0)
以下是active admin
ActiveAdmin.register Post do
permit_params :title, :content, :author
end
这只是一个例子,使用你自己的参数
答案 1 :(得分:0)
ActiveAdmin.register Post do
permit_params :title,
comments_attributes: [:name, :hidden]
end
Post是一个模型而评论是另一个。您可以使用带有comments_attributes的注释中的参数,如果您的模型名称是价格,您可以使用price_attributes:[... params ...]。