我有一个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