Rails ActiveAdmin - 在 link_to new 中传递多态关联参数
Rails ActiveAdmin - pass polymorphic association parameters in link_to new
我是 ActiveAdmin 的新手,我遇到了这个问题:
我有两个模型:图片和内容。图片通过多态关联有很多内容
我成功地使图片 show
中的按钮 "Create content" 页面通过 contentable_type 并且图片 ID 在 new_admin_content 请求中作为参数使用 new_admin_content 中的以下内容 app/admin/picture.rb :
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
操作?
通过将 f.object.contentable = params[:contentabl]
更改为 f.object.contentable_id = params[:contentabl]
(如数据库中的列名)并将所有表单参数添加到 permitted params
来解决问题
我是 ActiveAdmin 的新手,我遇到了这个问题:
我有两个模型:图片和内容。图片通过多态关联有很多内容
我成功地使图片 show
中的按钮 "Create content" 页面通过 contentable_type 并且图片 ID 在 new_admin_content 请求中作为参数使用 new_admin_content 中的以下内容 app/admin/picture.rb :
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
操作?
通过将 f.object.contentable = params[:contentabl]
更改为 f.object.contentable_id = params[:contentabl]
(如数据库中的列名)并将所有表单参数添加到 permitted params