2011-02-25 112 views
2

的Rails 2.3.5/will_paginate gem是2.3.15will_paginate有沒有一種方法來設置per_page爲「所有」

我有一個頁面部分,在那裏用戶可以選擇多少項每頁顯示(與'所有'選擇)。我不喜歡那裏有'全部',但是列表中的每個項目都有一個複選框,以便可以對列出的項目執行批量操作(如果項目被分解,用戶無法選擇查詢將返回的所有項目成頁面)。

我還沒有找到答案,但有沒有辦法將per_page選項設置爲'all'?我暫時只是把一個巨大的數字(1000000)作爲解決方法。這是做到這一點的唯一方法嗎?

我想到剛用的find_by_sql更換paginate_by_sql條件,但隨後在視圖中我不得不在邏輯添加到不寫了「<%= will_paginate @項%>」

if cookies[:items_per_page] 
     if cookies[:items_per_page] == 'ALL' 
     @items = Item.paginate_by_sql(sql, :page => params[:page], :per_page => 1000000) 
     elsif %w(10 20 30 40 50 75 100).any? {|str| cookies[:items_per_page].include? str} 
     @items = Item.paginate_by_sql(sql, :page => params[:page], :per_page => cookies[:items_per_page].to_i) 
     else #cookie doesn't contain a valid choice, default to '10' 
     @items = Item.paginate_by_sql(sql, :page => params[:page], :per_page => 10) 
     end 
    else #cookie doesn't exist, default to '10' 
     @items = Item.paginate_by_sql(sql, :page => params[:page], :per_page => 10) 
    end 

回答

6
Item.paginate_by_sql(sql, :page => params[:page], :per_page => Item.count) 
+0

DOH! - 謝謝! – Reno 2011-02-25 14:13:02

+0

請注意,這樣做會將所有項目放在一個頁面上,因此如果您的「頁面」變量是大於1的任何數字,則偏移量將高於項目記錄的數量。將所有內容放在一個頁面上都會影響分頁的目的,而且可能不是您正在尋找的解決方案。 – Steve 2013-06-19 06:10:02

+0

這個計數查詢是不是頭頂? – 2017-02-09 06:27:34

相關問題