2012-02-07 102 views
2

我正在製作一個Spree網站,其中包含鏈接,用於更改每個頁面上的產品數量,包括全部鏈接。一個數字的鏈接很容易,因爲我可以通過查詢字符串和輔助方法傳遞一個:per_page參數。然而,我無法弄清楚我需要傳遞給Kaminari沒有分頁還是暫時禁用Kaminari。暫時禁用Spam中的Kaminari分頁

我很高興爲Spree或Kaminari的解決方案。我寧願使用除:per_page = 1000之外的方法或者一些類似的大數字。

  • 施普雷0.70.3
  • 雷0.13.0

回答

2

你可以傳遞一個查詢字符串參數,然後將其過濾你的控制器動作裏面?例如:

def show 
    @products = unless params[:show_all] 
    Product.page(params[:page]).per(params[:per_page]) 
    else 
    Product.all 
    end 
end 

我知道這不會給你在任何施普雷或雷一個解決方案,但它可能會幫助解決的問題。我很想知道是否有另一種方式建立到圖書館。

+0

是否與雷傭工工作的呢? – Amanda 2012-06-06 07:04:45

+1

@parndt測試表明這基本上可行,但Spree在其深處設置了「@ products」等價物,因此您必須在控制器裝飾器中攔截事物並使用'params [:per_page] = Product.count更改查詢字符串參數如果params [:per_page] =='all'' – Yogh 2012-06-06 07:07:08

+0

不幸的是,只要將它設置爲'Products.all',就會導致#'未定義的方法'current_page',因爲它期望Kaminari對象。看起來像修改'params [:per_page]'是唯一的解決方案。 – Amanda 2012-06-06 07:15:28

0

這是我怎麼一直在做,因爲我需要的輔助方法是雷增加的記錄列表:

params[:per] = Product.count if params[:per] == 'all' 
Product.page(params[:page]).per(params[:per]) 

這將避免undefined method 'current_page' for #<Array:0x007fc6157c16a8>錯誤。 (本質上@永和在對方的回答的意見建議。)

1

嘗試使用此方法處理未定義的方法「CURRENT_PAGE」

=paginate @object if @object && @object.try(:total_pages)