【发布时间】:2012-09-11 21:02:52
【问题描述】:
我有一个 Rails 3 内部应用程序,用于: 19" 触摸屏、10" iPad、7" 平板电脑
我正在使用 will_paginate / kaminari 来显示数据列表。
但是如何根据屏幕大小配置每页显示多少项目?
例如19" 显示器 20 行,10" 显示器 11 行,7" 显示器 8 行
【问题讨论】:
我有一个 Rails 3 内部应用程序,用于: 19" 触摸屏、10" iPad、7" 平板电脑
我正在使用 will_paginate / kaminari 来显示数据列表。
但是如何根据屏幕大小配置每页显示多少项目?
例如19" 显示器 20 行,10" 显示器 11 行,7" 显示器 8 行
【问题讨论】:
您可能会考虑在通过 Ajax 向您的应用程序发出的第一个请求中传递相关的 navigator 和/或 screen 信息,并使用该信息来决定 Rails 中的后端。
要获取浏览器/操作系统信息,请查看 Javascript 的 navigator 对象,要获取有关屏幕尺寸的信息,请查看 Javascript 的 screen 对象。
您的 Ajax 控制器操作可以将导航器/屏幕信息的 JSON 版本存储到 session,ApplicationController 中的 before_filter 可用于设置 @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 的寻呼机。
【讨论】: