Rails 3 - Will_Paginate - делает ссылки на страницы более похожими на GMAIL - PullRequest
2 голосов
/ 09 октября 2010

Я использую плагин Rails 3 Will_Paginate и использую следующий учебник, чтобы научиться настраивать ссылки на страницы:

http://thewebfellas.com/blog/2010/8/22/revisited-roll-your-own-pagination-links-with-will_paginate-and-rails-3/

Мой вопрос: как сделать ссылки на страницы более похожими на GMAIL, например:

1 - 100 из 25409 Старее ›Старее»

‹Более новые 101 - 200 из 25409 Старые› Самые старые »

«Новейшие‹ Более новые 25401 - 25409 из 25409

Спасибо

Ответы [ 2 ]

3 голосов
/ 09 октября 2010

Похоже, что эта ссылка содержит (почти) всю необходимую информацию.

«Старее» - это «Следующая страница», поэтому вы переопределяете метод next_page в вашем рендерере.«Самый старый» - «Последняя страница»;вам нужно добавить метод, а затем убедиться, что он включен в массив, возвращаемый вашим методом pagination (здесь поможет метод total_pages, встроенный в will_paginate).

Затем выполните обратное для Newer/Newest.

Посмотрите файлы 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 великолепен в этой области.

0 голосов
/ 20 декабря 2011

Попробуйте что-то вроде

<%= will_paginate @items, :class => 'apple_pagination' %>

класс также может быть digg_pagination, .flickr_pagination.

Перед этим вам необходимо загрузить и скопировать pagination.css в ваши публичные / таблицы стилей.

...