2014-10-12 84 views

回答

2

答案就在上面的问题链接的线程中。在这里写它更容易找到。显然,您需要再次构建订单字符串并向其添加Null Last

这解决了这个问题对我来说(适用于所有列):

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

但是你需要排除它,当你没有任何形式的parametre,所以这是我最终的解决方案:

@q = Project.ransack(params[:q]) 
@fields = current_user.settings.default_project_fields 
if @q.sorts.present? 
    @result = @q.result.except(:order).order("#{@q.sorts.first.name} #{@q.sorts.first.dir} NULLS LAST") 
else 
    @result = @q.result 
end 
+0

这是一个很好的解决方案,但在对相关记录进行排序时不起作用,因为它使用排序链接中的原始值...例如,ORDER BY tasks.created_at'将是ORDER BY tasks_created_at'订单重写 – agbodike 2016-09-12 01:46:36

+0

@agbodike对相关记录进行排序的任何解决方案? – 2016-11-30 02:12:52

+0

不,但我推迟了这项任务,因为它并不紧急,所以我没有花太多时间寻找替代方案。 – agbodike 2016-12-02 22:42:17