2012-09-11 74 views
1

我有其上使用的Rails 3的點播服務應用: 19" 的觸摸屏,10" 寵物,家畜,7" 平板PAGINATE #rows

我使用will_paginate /雷用於顯示數據的列表。

但我怎麼可以配置它應該有多少個項目每頁取決於屏幕大小顯示?

如20線19" 顯示,11條線路的10" 顯示器,8號線的7 「display

回答

2

您可能會考慮首先向您的應用程序請求通過Ajax傳遞相關的navigator和/或screen信息,並使用該信息決定Rails中的後端。

要獲取瀏覽器/操作系統信息,請參閱Javascript的navigator對象並獲取有關屏幕尺寸的信息,檢查Javascript的screen對象。

你的Ajax控制器行動可能的導航/屏幕信息JSON版本存儲sessionApplicationController一個before_filter可以用來設置@per_page在整個應用程序的paginators使用。

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到雷的尋呼機。

+0

在這種情況下,使用rails request.env ['HTTP_USER_AGENT']而不是javascript會容易得多。 –

+0

也許,但是OP對於屏幕的**大小**似乎也很感興趣,它在HTTP頭文件中不可靠。 – deefour

+0

謝謝你的建議。所以我使用了jQuery.post(「/ screensize」,{width:screen.width,height:screen.height});並將其存儲在會話變量中 – Klaus