paginate #rows取决于屏幕大小

时间:2012-09-11 12:14:00

标签: ruby-on-rails paginate

我有一个Rails 3内部应用程序,用于: 19英寸触摸屏,10英寸iPad,7英寸平板电脑

我使用will_paginate / kaminari显示数据列表。

但是,如何根据屏幕尺寸配置每页应显示的项目数?

e.g。 19“显示器20行,10”显示器11行,7“显示器8行

1 个答案:

答案 0 :(得分:2)

您可以考虑第一次向您的应用程序请求通过Ajax传递相关的navigator和/或screen信息,并使用该信息来决定Rails中的后端。

要获取浏览器/操作系统信息,请参阅Javascript的navigator对象并获取有关屏幕尺寸的信息,请检查Javascript的screen对象。

您的Ajax控制器操作可以将导航器/屏幕信息的JSON版本存储到sessionbefore_filter中的ApplicationController可用于设置@per_page以供您在整个过程中使用应用程序的分页器。

before_filter do
  @per_page = 11 if !session[:navigator][:userAgent].match(/iPad/).nil?
  @per_page = 8  if !session[:navigator][:userAgent].match(/Android/).nil? && session[:screen][:width] < 1000
  # ...
end

然后,您将@per_page传递给kaminari的寻呼机。