【问题标题】:AngularJS and Ruby on Rails 4 total count of elements in query with paginationAngularJS 和 Ruby on Rails 4 分页查询中的元素总数
【发布时间】:2015-06-03 07:19:17
【问题描述】:

我有一个 AngularJS Web 应用程序,它向 Ruby on Rails api 发送请求。 webapp 有一个显示结果的搜索器。查询很复杂,并且有某种分页(每次提供 20 个结果),带有限制和偏移量,如下所示:

SELECT SELECT DISTINCT b.id
FROM ... 
WHERE ... 
LIMIT 20 OFFSET 0

在搜索器中,我想显示结果的总数,例如:显示来自 totalCount 的 1 到 20。

要获取totalCount,我唯一的方法是执行两次查询,一次获取元素,另一次获取totalCount。但是,我想避免这种情况,因为它是一个复杂的查询。

有没有更好的方法来获得这个总数?

【问题讨论】:

  • 您是否使用任何 gem 进行 Rails 分页?还是只是从 angularjs 处理分页器?
  • 我正在使用 AngularJS 的分页和无限滚动。
  • 这不是正确的方法,您应该从服务器端处理分页参数,否则会出错。
  • Rails api 就是这样一个 API。因此,它只接收请求并返回结果。当然,我在 web 应用程序中有一个 pageIndex 参数,它作为请求的一部分发送到 Rails API,因此 API 知道显示哪个页面。

标签: sql ruby-on-rails angularjs pagination


【解决方案1】:

我希望您使用 gem 'kaminari' (https://github.com/amatsuda/kaminari)。只需对您的 Rails 服务进行 ajax 调用,首先计算总记录数,然后计算匹配数据并将两者都发送回 json。

【讨论】:

  • 我不知道这个,听起来不错。我会进行更深入的了解。但是,无论如何,它会在幕后执行至少两个查询,对吧?
  • 当我有更多时间时,我可能会更深入地研究你的方法。到目前为止,我已经手动完成了您的方法。我的意思是,我执行查询两次,一次获取结果列表,一次获取元素总数,然后将其发送回 Web 应用程序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-24
  • 2023-03-12
  • 1970-01-01
  • 2018-05-25
  • 1970-01-01
相关资源
最近更新 更多