我继承了使用Active Admin创建的系统。我需要将其中一个模型" report"添加到Active Admin中。我做了这个,检查了仪表板中的索引显示,一切都很顺利。但是,当我尝试使用任何CRUD功能时,它会中断错误:
Couldn't find Report with id=name_of_report
问题是Active Admin正在生成这样的路由(其中report_title是report.title值):
http://localhost:3000/admin/reports/report_title
而不是:
http://localhost:3000/admin/reports/1
查看模型显示问题与具有to_param方法的报表模型有关:
def to_param
title
end
如果我将其删除,那么我的活动管理页面就会正常运行。但是,如果我删除了to_param,则会写入大量的报告功能,因为它需要URL的格式如上所述(http://localhost:3000/admin/reports/)。
我设法使用" link_to"创建了自己的链接。添加,查看,删除(见下文)。我也有类似方式的新链接。
应用程序/管理/ reports.rb
index do
selectable_column
column :title
column :id
column :column_method
column :row_method
actions defaults: false do |action|
link_to("View", admin_report_path(action.id), { :class=> "member_link view_link" } ) +
link_to("Edit", edit_admin_report_path(action.id), { :class=> "member_link view_link" } ) +
link_to("Delete", admin_report_path(action.id), { :class=> "member_link view_link" }, method: :delete, data: { confirm: 'Are you sure?' })
end
end
问题是我无法在表单提交时从表单中更新或创建详细信息。
我想知道是否有其他人遇到过这个问题而且知道如何绕过它?
非常感谢任何建议。
修改
Timo的解决方案对我来说很好,非常感谢你的快速反应。对于那些感兴趣的人,我的report.rb程序现在看起来像这样:
ActiveAdmin.register Report do
controller do
resources_configuration[:self][:finder] = :find_by_title
end
index do
selectable_column
column :title
column :id
column :column_method
column :row_method
actions
end
form do |f|
f.inputs 'Details' do
f.input :title
f.input :column_method
f.input :row_method
f.input :id # This should probably be hidden.....
f.buttons
end
end
end
答案 0 :(得分:3)
ActiveAdmin.register Report do
controller do
resources_configuration[:self][:finder] = :find_by_title
end
end