ruby-on-rails - Ransack 计数排序顺序错误

标签 ruby-on-rails sorting ruby-on-rails-4 ransack

我正在使用 Ransack Gem 并通过计数器缓存进行计数排序。我的属性是一个整数。
我这样称呼它:

<%= sort_link(@q, :people_count, "PEOPLE") %>
我得到的排序输出是:
[人升]
1
2
0
0
[人物描述]
0
0
2
1
我要 人事部显示:
2
1
0
0
任何人都可以帮忙吗?
--- 更新 -----
经过一个多小时的搜索,我觉得我越来越近了:
首先,我必须编辑我的 View :
<%= mycontact.people.count %>
<%= mycontact.people_count %>
这将所有零更改为 nil。
现在我的排序输出是:
[人物描述]


2
1
然后我做了更多的挖掘,找到了 link github 上的这个问题说明您必须最后添加 NULLS。
所以我在 中添加了以下代码peoples_controller.rb :
@q.result.except(:order).order("#{@q.sorts.first.attr_name} #{@q.sorts.first.dir} NULLS LAST")
起初我很兴奋,因为它有效,但在重新启动服务器后出现以下错误:
nil:NilClass 的未定义方法 `attr_name'

最佳答案

我不熟悉 Ransack gem;但是,既然我已经看到了它的功能,我可能最终会使用它。

尝试这个:

<%= sort_link(@q, :people_count, "PEOPLE", default_order: :desc) if :people_count > 0 %>

沿着这些方向应该会为您提供以下 [PEOPLE DESC] 的输出:

2

1

然后你可以做这样的事情:
<%= sort_link(@q, :people_count, "PEOPLE", default_order: :desc) where :people_count = 0 %>

显示计数为 0 的结果。

这个逻辑有意义吗?

关于ruby-on-rails - Ransack 计数排序顺序错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28151363/

相关文章:

linux - Unix 按列整数过滤

mysql - Rails 4 在不区分大小写的情况下验证电子邮件的唯一性

ruby-on-rails - 无法在 Rails 应用程序中使用@font-face

ruby-on-rails - Rspec 模型方法在由 let 创建时返回 nil

java - 为什么 binarySearch 需要排序数组?

c - 快速排序和霍尔分区

ruby-on-rails - Rails,字符串长度的 DRY 默认验证器?

javascript - Rails 4 Angularjs Paperclip 如何上传文件

ruby-on-rails - Delayed_Job 执行 rake 不重定向输出

ruby-on-rails - 功能测试错误 - 未初始化常量 FFaker::File