2015-09-16 47 views
2

在控制器:total_entries爲will_paginate不能正常工作軌道4

@top_holders = Holders.where(:client_id=>1).paginate(:page => params[:page],:per_page => 10 ,:total_entries => 12) 

鑑於:

<%= will_paginate @top_holders, renderer: BootstrapPagination::Rails %> 

在我收到的20條記錄這是不正確的視圖頁面,它應該是12條。即在頁面= 1時返回10條記錄,在頁面= 2時返回另外10條記錄。

爲了獲得解決方案,我失去了一整天,請幫助我。

+0

你找到一個解決辦法? – coderVishal

回答

0

total_entries鍵只是一種避免SQL COUNT查詢的方法。如果您想要返回更多結果,請將:per_page設置爲更高的值。

+0

:total_entries不能解決問題,我在本地進行了測試,還有其他選擇嗎? – soltex

1

您的查詢可能不會只返回12條,我會嘗試使用限制另一種方法,是這樣的:

@top_holders = Holders.where(:client_id=>1).paginate(:page => params[:page],:per_page => 10).limit(12) 

極限(N)會給你最後的N條記錄

+0

你的代碼不工作,仍然是同樣的問題。 –

+0

是的,你說得對,我認爲這樣會有效,但是在本地測試時,我意識到我錯了,顯然will_paginate可以做出糟糕的工作,情況就是這樣,:@tlehman說total_entries應該解決了問題,避免調用#COUNT的will_paginate。所以,我也在尋找解決方案。 – soltex

0

如果total_entries僅用於保存SQL COUNT查詢......爲什麼要返回比現有結果少的結果?

如果你真的需要,你可以這樣做:

PAGE_SIZE = 15 
MAX_SIZE = 70 

per_page = if PAGE_SIZE * params[:page] > MAX_SIZE 
    MAX_SIZE - (MAX_SIZE/PAGE_SIZE) * PAGE_SIZE 
else 
    PAGE_SIZE 
end 

@top_holders = Holders.where(client_id: 1).paginate(page: params[:page], per_page: per_page)