从nested_form中的复选框接受数据,并使用复选框中的数据创建记录



我有一个Products类,产品对零个或多个角色可见。因此,我创建了一个名为contentroles的多态模型,它存储角色的id和content_id(将是product_id或event_id)以及content_type(product、event等)。

我使用nested_form gem来接受角色id(使用check_box),以将产品和角色关系存储在content_role 中

我面临的问题是我无法创建content_role记录。在我的日志中,我得到了未被允许的参数:role_id

参数:{"utf8"=>"✓","authenticity_token"=>"xxxxxxxxxxxxxxx dLH99ZWLrf8dgT3gcBops=","product"=>{"product_name"=>"某个产品"、"productdescription"=>"某些产品描述"、"content_roles_attributes"=>{"role_id"=>["1"、"2"、"]}}、"commit"=>"创建产品"}

在我看来,我已经写了

 = f.simple_fields_for :content_roles_attributes do |role|
  = role.input :role_id,label: "visible to", as: :check_boxes,label: "Role",collection: Role.all,:required=>true

控制器允许的参数看起来像

def product_params
 params.require(:product).permit(:product_description,:product_name,
 content_roles_attributes:  [:role_id,:id],
 multimedia_attributes:[:asset,:_destroy,:id])
end

产品型号看起来像

 class Product     
  has_many :content_roles, as: :content
  has_many :multimedia ,as: :storable
  # Nested attributes
  accepts_nested_attributes_for :multimedia
  accepts_nested_attributes_for :content_roles
 end

这就是content_role模型

class ContentRole < ActiveRecord::Base
 belongs_to :content, polymorphic: true
 belongs_to :role
 belongs_to :news
 belongs_to :product
end

尝试将product_params更改为:

def product_params
  params.require(:product).permit(
    :product_description,
    :product_name,
    content_roles_attributes:  [:id, role_id: []],
    multimedia_attributes: [:asset, :_destroy,:id]
  )
end

相关内容

  • 没有找到相关文章

最新更新