如何为另一个模型设置permit_params

时间:2016-08-04 10:01:50

标签: ruby-on-rails associations activeadmin

这些是我的模特:

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。我该如何指定它们?感谢。

2 个答案:

答案 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 ...]。