Ruby on rails 以嵌套形式接受来自复选框的数据,并使用来自复选框的数据创建记录
我有一个产品类,产品对零个或多个角色可见。因此,我创建了一个名为content_roles的多态模型,它存储角色的id和content_id,即产品id或事件id,以及content_typeproduct、事件等 我使用嵌套的表单gem接受角色id,使用复选框将产品和角色关系存储在content\u role中 我面临的问题是我无法创建内容和角色记录。在我的日志中,我得到了不允许的参数:role\u id 参数:{utf8=>✓, 真实性\u令牌=>XXXXXXXXXXXXXXXXXXXXX DLH99ZWLRF8DGT3GCBOPS=,产品=>{product\u name=>一些产品,产品描述=>一些产品描述,内容角色属性=>{role\u id=>[1,2,]},提交=>创建产品} 在我看来,我已经写了Ruby on rails 以嵌套形式接受来自复选框的数据,并使用来自复选框的数据创建记录,ruby-on-rails,ruby,nested-forms,strong-parameters,Ruby On Rails,Ruby,Nested Forms,Strong Parameters,我有一个产品类,产品对零个或多个角色可见。因此,我创建了一个名为content_roles的多态模型,它存储角色的id和content_id,即产品id或事件id,以及content_typeproduct、事件等 我使用嵌套的表单gem接受角色id,使用复选框将产品和角色关系存储在content\u role中 我面临的问题是我无法创建内容和角色记录。在我的日志中,我得到了不允许的参数:role\u id 参数:{utf8=>✓, 真实性\u令牌=>XXXXXXXXXXXXXXXXXXXXX
= 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
产品模型看起来像
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
这就是内容和角色模型
class ContentRole < ActiveRecord::Base
belongs_to :content, polymorphic: true
belongs_to :role
belongs_to :news
belongs_to :product
end
尝试将产品参数更改为:
正如我建议的那样,我尝试将role_id设置为数组,它给了我一个TypeError,没有将字符串隐式转换为整数。任何关于如何解决该问题的建议???@Adil-这现在是另一个问题,您需要使用准确的错误消息以及回溯和最有可能的控制器操作相关代码来更新当前问题