【问题标题】:Active Admin Index Page sorting without a column没有列的活动管理索引页面排序
【发布时间】:2014-08-24 07:01:32
【问题描述】:

相关数据由VenueMatchBroadcast组成,这是一个连接表,前两者还有更多。

在我的Venue 索引页面中,我显示了该场地正在显示的Broadcasts 的数量。我想让这个排序。附加功能是,这应该只涉及 Matchs 在未来,为此我在我的 Broadcast 模型上有一个 active 范围,它将在未来返回匹配的广播。

我想让此列可排序。它的定义是venue.broadcasts.active.count。由于它不是数据库中的列,因此它似乎不可排序,并且由于它涉及随时间变化的范围,因此计数器列默认情况下不起作用,并且实现我自己的列似乎很复杂。有什么好的方法可以让这个排序吗?我不太关心性能。

【问题讨论】:

  • 您是否考虑过将计数设为一列? Rails 通过一个特殊的 counter_cache 列提供支持。请参阅 Rails 指南的 counter_cache 部分。
  • @CMaresh 计数器缓存对我不起作用,原因有 1.5 个。一方面,我的是一个范围计数,不确定counter_cache 是否处理它。而 .5 是这是从 php 逐步重写的,所以在完全完成之前,计数器缓存不会保持一致
  • 我实际上希望有一种方法可以进行纯文本排序,不可扩展,但我有

标签: ruby-on-rails ruby-on-rails-4 rails-activerecord activeadmin


【解决方案1】:

如果您需要按表中不存在的列对索引页面进行排序,请考虑使用客户端方法,例如 DataTables,一个 jQuery 表插件。

我曾经使用它进行快速页内搜索,而无需访问数据库。虽然它可能看起来有点 hacky,但它适用于相当少的记录。

我相信你可以将the DataTables gem 用作the way I googled,但我是手动完成的:

# config/initializers/active_admin.rb
config.register_javascript 'jquery.dataTables.js'
// app/assets/javascripts/active_admin.js
$('#index_table_on_order_orders').dataTable(); // Specify options as you need.

【讨论】:

  • 是的,这也是我想做的事情。很高兴知道这已经被尝试过!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-28
  • 2013-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多