【发布时间】:2015-03-24 22:32:39
【问题描述】:
我正在使用 Ransack Gem 并通过计数器缓存进行计数排序。我的属性是一个整数。
我这样称呼它:
<%= sort_link(@q, :people_count, "PEOPLE") %>
我得到的排序输出是:
[人物 ASC]
1
2
0
0
[人物描述]
0
0
2
1
我希望 PEOPLE DESC 显示:
2
1
0
0
有人可以帮忙吗?
---更新-----
经过一个多小时的搜索,我觉得我越来越近了:
首先我必须编辑我的视图:
来自
<%= mycontact.people.count %>
到
<%= mycontact.people_count %>
这将所有零更改为零。
现在我的排序输出是:
[人物描述]
无
无
2
1
然后我做了一些更多的挖掘,并在 github 上找到了这个问题的 link,它解释了你必须添加 NULLS LAST。
所以我在 peoples_controller.rb 中添加了以下代码:
@q.result.except(:order).order("#{@q.sorts.first.attr_name} #{@q.sorts.first.dir} NULLS LAST")
一开始我很兴奋,因为它可以工作,但是在重新启动我的服务器后出现以下错误:
nil:NilClass 的未定义方法 `attr_name'
【问题讨论】:
-
Gary,输入大量打印语句来找出得到 nil 的对象是什么。不要犹豫,在 Gems 中放入大量 prints 语句并在那里阅读源代码。帮助吨!
标签: ruby-on-rails sorting ruby-on-rails-4 ransack