【问题标题】:Ransack count sort order is wrongRansack 计数排序顺序错误
【发布时间】: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'

【问题讨论】:

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


【解决方案1】:

我不熟悉 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 显示结果。

这个逻辑有意义吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    相关资源
    最近更新 更多