我使用了Rails 3插件Will_Paginate並已使用下面的教程來學習如何自定義分頁鏈接:Rails的3- Will_Paginate - 讓分頁鏈接更像GMAIL
我的問題是,如何使分頁鏈接更像GMAIL,例如:
1 - 100 25409舊版>最舊»
<更新的101 - 200 25409舊版>最舊»
«最新<較新的25401 - 25409的25409
感謝
我使用了Rails 3插件Will_Paginate並已使用下面的教程來學習如何自定義分頁鏈接:Rails的3- Will_Paginate - 讓分頁鏈接更像GMAIL
我的問題是,如何使分頁鏈接更像GMAIL,例如:
1 - 100 25409舊版>最舊»
<更新的101 - 200 25409舊版>最舊»
«最新<較新的25401 - 25409的25409
感謝
它看起來像該鏈接有(幾乎)所有你需要的信息。
「較舊」基本上是「下一頁」,因此您在渲染器中覆蓋了next_page
方法。 「最舊」是「最後一頁」;您需要添加一個方法,然後確保它包含在由pagination
方法返回的數組中(will_paginate中構建的total_pages
方法將在此處有所幫助)。
然後做相反的更新/最新。
看看link_renderer.rb和link_renderer_base.rb文件。他們有你將被壓倒一切的方法。
我寫了一個自定義的will_paginate 3渲染器來模擬GitHub/Twitter風格的「更多」分頁。我註釋了下面的代碼。它不會讓你準確地到達需要去的地方,但這是一個開始。
module TwitterPagination
class LinkRenderer < WillPaginate::ViewHelpers::LinkRenderer
protected
# Tells WP how to render the "Next Page" link
def next_page
# The only difference from the default here is we renamed the link to "More"
# and added a custom class, twitter_pagination
previous_or_next_page(@collection.next_page, "More", 'twitter_pagination') if @collection.next_page
end
# Remove all links except our :next_page
def pagination
[ :next_page ]
end
end
end
爲了做到這一點,我需要知道的一切都可以通過閱讀上面鏈接的兩個源文件來解決。
這真的讓我感到驚訝,這是多麼容易; will_paginate的最新設計在這方面非常出色。
嘗試像
<%= will_paginate @items, :class => 'apple_pagination' %>
類也可以digg_pagination,.flickr_pagination。
在此之前,您需要download並將pagination.css複製到您的公共/樣式表中。
謝謝,這很酷。但我仍然沒有遵循如何使它有條件(只有顯示更多,如果它是活動的)...另外,如何讓記錄查看&計數顯示在鏈接之前(25406的1 - 100) – AnApprentice 2010-10-09 18:30:06
請注意'if @ 「collection.next_page」條件 - 如果實際上有下一頁,它只顯示「更多」。至於編號的項目,這有點複雜。查看[collection.rb]文件(http://github.com/mislav/will_paginate/blob/v3.0.pre2/lib/will_paginate/collection.rb)。它基本上是一個帶有額外方法的數組,因此您可以調用'@ collection.size'來知道此組中的項目數量;乘以'current_page'獲得開始,將組中的項目數加到開始以獲得最大邊界,等等。 – 2010-10-09 18:38:22
明白了 - 謝謝! – AnApprentice 2010-10-10 03:18:13