Ruby on rails Ransack赢得';t排序计数列?
我的分类有问题 在对Ruby on rails Ransack赢得';t排序计数列?,ruby-on-rails,ruby,ruby-on-rails-4,ransack,Ruby On Rails,Ruby,Ruby On Rails 4,Ransack,我的分类有问题 在对id和mac列进行排序时,Ransack可以正常工作,但在frequency列上不起作用。当我点击frequency时,日志中没有显示任何内容 型号: scope :with_frequency, -> { select('devices.*,tr.times AS frequency'). joins('join (SELECT device_id,count(device_id) AS times FROM timed_requests tr GROUP BY de
id
和mac
列进行排序时,Ransack可以正常工作,但在frequency
列上不起作用。当我点击frequency
时,日志中没有显示任何内容
型号:
scope :with_frequency, -> {
select('devices.*,tr.times AS frequency').
joins('join (SELECT device_id,count(device_id) AS times FROM timed_requests tr GROUP BY device_id) AS tr ON tr.device_id = devices.id')}
控制器:
def index
@search = Device.with_frequency.search(params[:q])
@search.sorts = 'frequency desc' if @search.sorts.empty?
@devices = @search.result.paginate(page: params[:page], per_page: 20)
end
视图:
日志(首先单击频率而不是ID):
谢谢你的帮助。我想问题在于
设备
没有频率
栏。请尝试在join语句中包含列,如groupbydevice\u id orderbytimes
谢谢您的回答。我想这就是问题所在,但我不知道解决办法。从按设备分组\u id按时间顺序添加不起作用。为什么您的作用域名称是带\u frequency
,而您在控制器中调用frequency
?这是一个复制和粘贴错误。我用频率调用控制器的,范围与我的问题完全相同@你找到解决这个问题的方法了吗?
%th= sort_link @search, :id, "ID"
%th= sort_link @search, :mac, "MAC-Addresse"
%th= sort_link @search, :frequency, "Frequency"
Parameters: {"page"=>"1", "q"=>{"s"=>"frequency desc"}}
Device Load (39.8ms) SELECT devices.*,tr.times AS frequency FROM "devices" join (SELECT device_id,count(device_id) AS times FROM timed_requests tr GROUP BY device_id) AS tr ON tr.device_id = devices.id LIMIT 20 OFFSET 0
Parameters: {"page"=>"1", "q"=>{"s"=>"id asc"}}
Device Load (61.3ms) SELECT devices.*,tr.times AS frequency FROM "devices" join (SELECT device_id,count(device_id) AS times FROM timed_requests tr GROUP BY device_id) AS tr ON tr.device_id = devices.id ORDER BY "devices"."id" ASC LIMIT 20 OFFSET 0