Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Rails 3 - Will_Paginate - Делаем ссылки на страницы более похожими на GMAIL

Автор вопроса: AnApprenticeОтветов: 2

Я использую плагин 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

Спасибо

ruby-on-railsruby-on-rails-3will-paginate

Ответы

Ответ 1 · рейтинг 3 · Robert Speicher

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

"Старые" - это, по сути, "Следующая страница", поэтому вы переопределяете метод 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 великолепен в этой области.

Ответ 2 · crazycrv

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

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

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы