2011-06-24 56 views
0

我在25年內每年收集約100件物品。最好每年按頁面列出它們,以便更深入地查看特定對象。是否有插件或寶石按年份分頁Rails集合,而不是固定數量的項目?甚至可能按月?是否有可能調整will_paginate來做到這一點?我可以按年份分頁結果嗎?

編輯:

ss = Services.all.group_by { |s| s.date_of_service.year }

這產生一個有序的散列在其本人可以通過鍵分頁。

ss.keys.each { |k| p ss[k].count }

回答

1

我不認爲你會找到這樣的寶石。使用示波器自己實現簡單的分頁系統應該不那麼困難。

我想你多年沒有單獨的表。因此,要檢索獨特年份的完整列表,您應該使用group方法。

scope :years, lambda { select('year').group('year') } 
    scope :year, lambda { |year| where(:year => year) } 

另一種選擇是keruilin建議的。使用year範圍內的任何分頁寶石(我使用kaminari)。

+0

我在Rails 2.x上。我可以使用'named_scope:year,lambda {| y | {:conditions =>「YEAR(date_of_service)=#{y}」}}'對於第二部分,但這是我可以在第一部分中想到的。當然,還有更好的辦法。 ys = []; Service.all.collect {| s | ys << s.date_of_service.year}; ys.uniq !;結束' –

+0

我沒有使用rails2的經驗,但我認爲應該可以使用'lambda {find(:select =>'year',:group =>'year')}' – bassneck

+0

Cool。我不知道':select'在Rails 2中可用。你的方法給我一個具有單一屬性的對象列表。我認爲它只會返回屬性。我想我想要我的班級方法給我的年數列表。無論如何,我剛剛找到了這個;也許我可以從它得到一些里程:http://stackoverflow.com/questions/3488534/using-lambda-in-find-in-rails –

0

我使用will_paginate實現一般分頁。無論您正在查看哪一年,您都可以獲得每頁10-25個結果。

然後,我會實現第二種過濾機制,通過這種機制,您可以使用一些良好的AR/SQL魔術按年查看結果。使用我的應用,我使用下拉菜單選擇年份,但您可以使用其他一些UI元素。

我不能肯定地說,如果will_paginate可以幫助你解決按年問題,但我不會建議定製它以適應您的需求。只是創建一個兼容性問題,除非你monkeypatch。