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

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Ransack计数排序顺序错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Ransack Gem并通过计数器缓存进行计数排序.我的属性是一个整数.

我这样称呼它:

<%= sort_link(@q,:people_count,"PEOPLE") %>

我得到的排序输出是:

[人民ASC]

1
2
0
0

[PEOPLE DESC]

0
0
2
1

我希望PEOPLE DESC能够展示:

2
1
0
0

任何人都可以帮忙吗?

— UPDATE —–

经过一个多小时的搜索,我觉得我越来越近了:

首先,我必须编辑我的观点:

<%= mycontact.people.count %>

<%= mycontact.people_count %>

这将所有零都改为零.

现在我的排序输出是:

[PEOPLE DESC]



2
1

然后我做了一些挖掘,并在github上找到了这个问题的link,这解释了你必须最后添加NULLS.

所以我将以下代码添加到peoples_controller.rb:

@q.result.except(:order).order("#{@q.sorts.first.attr_name} #{@q.sorts.first.dir} NULLS LAST")

我一开始很兴奋,因为它工作但是在重新启动我的服务器之后我收到以下错误

未定义的方法`attr_name’代表nil:NilClass

解决方法

我不熟悉Ransack宝石;但是,我现在最终可能会使用它,因为我已经看到了它能做什么.

试试这个:

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

这些行中的某些内容应该为[PEOPLE DESC]提供以下输出

2

1

然后你可以做这样的事情:

<%= sort_link(@q,default_order: :desc) where :people_count = 0 %>

以0为计数显示结果.

这个逻辑有意义吗?

猜你在找的Ruby相关文章