我是ActiveAdmin的新手,我遇到了这个问题:
我有两种模式:图片和内容。图片通过多态关联有很多内容。
我成功制作了按钮"创建内容"从图片show
页面使用app / admin / picture.rb中的以下内容将contentable_type和图片ID作为参数传递给new_admin_content请求:
action_item :new, only: :show do
link_to "Add content", new_admin_content_path(contentable_type: "Picture", contentable: picture)
end
并接收我在app / admin / content.rb中写下的参数:
permit_params :list, :of, :attributes, :on, :model, :contentable, :contentable_type
form do |f|
f.object.contentable_type = params[:contentable_type]
f.object.contentable = params[:contentabl]
puts f.object.contentable_type
puts f.object.contentable
f.inputs "Details" do
.
.
.
end
actions
end
但是在这种情况下,我收到了这个错误:
NoMethodError in Admin::Contents#new
undefined method `primary_key' for String:Class
错误由第f.object.contentable = params[:contentable]
行
当我只通过contentable_type
传递给f.object而没有通过contentable
时,f.object将contentable_type
保存在其字段中,但提交表单并不会创建新记录
如何在表单字段中保存contentable
并成功对表单提交进行create
操作?
答案 0 :(得分:0)
通过将f.object.contentable = params[:contentabl]
更改为f.object.contentable_id = params[:contentabl]
(如数据库中的列名称)并将所有表单参数添加到permitted params