我一直在用表填充仪表板页面,而没有呈现任何html
。但是我需要根据数据库中具有布尔值的列值对表进行排序或过滤。 sortable
标签没有任何反应
tab "test" do
columns do
panel "test" do
table_for Test.all do
column "Name", :name
column "status", :status, :sortable => :status # this needs to be sortable
end
end
end
end
ActiveAdmin Dasboard
中可能吗?
ActiveAdmin.register_page "Dashboard" do
如果将来有人需要帮助以自定义排序:
test_order = if params[:order]
params[:order].gsub(/[^a-z_]/,'').gsub(/_(asc|desc)$/, ' \1') #sanitize and convert to order expression
else
"status desc" #default
end
table_for Test.all.order(test_order), sortable: true, class: 'index_table' do
column "Name", :name, sortable: false #to hide sorting name
column :status
end
end
end
来源:https://github.com/activeadmin/activeadmin/issues/4483#issuecomment-237073696
ActiveAdmins table_for
包装器假定您正在处理资源。在“仪表板”页面上并非如此。通过动态打开ActiveAdmin::Page
(将此文件放在admin/dashboard.rb
顶部)
module ActiveAdmin
class Page
def ordering
""
end
def resource_column_names
[]
end
def resource_quoted_column_name q
q
end
end
end
end
您可以通过以下方式使用table_for
panel "test" do
resources_to_sort_over = Test.unscoped
order = params[:order] if params[:order] =~ /_(desc|asc)/
order = order || 'id_desc' # defaults to id
aa_order_clause = ActiveAdmin.application.order_clause.new(active_admin_config, order)
sorted_resources = aa_order_clause.apply(resources_to_sort_over)
table_for(sorted_resources, :sortable => true, :class => 'index_table', :id => 'your_id') do
column :name
column :status
end
end
不过要当心。有些人可能将其称为monkey patching
。想要在这里工作。