【问题标题】:paginate #rows depending on screen size根据屏幕大小分页#rows
【发布时间】:2012-09-11 21:02:52
【问题描述】:

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

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

但是如何根据屏幕大小配置每页显示多少项目?

例如19" 显示器 20 行,10" 显示器 11 行,7" 显示器 8 行

【问题讨论】:

    标签: ruby-on-rails pagination


    【解决方案1】:

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

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

    您的 Ajax 控制器操作可以将导航器/屏幕信息的 JSON 版本存储到 sessionApplicationController 中的 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 的寻呼机。

    【讨论】:

    • 在这种情况下使用 rails request.env['HTTP_USER_AGENT'] 而不是 javascript 会容易得多。
    • 也许吧,但 OP 似乎对屏幕的 size 也很感兴趣,这在 HTTP 标头中并不可靠。
    • 感谢您的建议。所以我使用了 jQuery.post("/screensize", { width: screen.width, height: screen.height });并将其存储在会话变量中
    猜你喜欢
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    • 2013-09-28
    • 2017-01-19
    • 2014-05-18
    • 1970-01-01
    • 2020-09-29
    相关资源
    最近更新 更多