14

在一个活动的管理显示页面中,我有两个面板,第一个是主记录,第二个是关联信息(通过 has_many)所以show看起来像这样:

panel "Max Amount" do
  table_for user.max_amount do
    column 'Amount', :amount
    column 'time', :updated_at
  end
end

我可以在金额列上对这个从高到低(或从低到高)进行排序吗?

更新:我找到了演示的来源(https://github.com/gregbell/demo.activeadmin.info/blob/master/app/admin/users.rb),它似乎有排序但是当你去实际演示站点不起作用。这个功能可能被破坏了吗?有解决办法吗?

4

3 回答 3

16

我发现这样做的唯一方法有点hacky。ActiveAdmin 将通过参数哈希传递列名和 asc/desc,然后您可以将其添加到查询中。

另外,确保将“sortable: true”传递给 table_for 调用。

panel "P&L" do
  table_for Quote.order(params[:order].gsub('_', ' ')), sortable: true do
    column("Revenue", sortable: :revenue) { |quote| number_to_currency quote.revenue }
    column("Profit", sortable: :profit)  { |quote| number_to_currency quote.profit  }
  end
end
于 2013-05-08T02:38:35.880 回答
8

使用基于@idrinkpabst 的rails 4.2,我执行了以下操作:

table_for group.devices.order(
  # Support for column name with underscore
  # Support "no sort param"
  (params[:order] ? params[:order] : '').gsub('_asc', ' asc').gsub('_desc', ' desc')
), sortable: true do
  # Directly using symboles and not using sortable:
  column :presence
  column :serial_number
  column :apk_version
  column :firmware_version
end

这是一个更强大的版本:

  • 允许列名带下划线
  • 支持“无排序参数”
  • 适用于导轨 4.2
于 2015-09-01T18:03:01.907 回答
2

ActiveAdmin 现在支持表格排序。

table_for ride.bookings.order('updated_at desc') do
  column :name
  column :created_at
end

这要感谢 Ryan Bates 的截屏视频:http ://railscasts.com/episodes/284-active-admin?view=asciicast

于 2018-10-12T15:58:36.617 回答