Я заметил, что драгоценные камни, такие как mislav-will_paginate
, довольно популярны. Это потому, что Rails не имеет встроенного решения для разбивки на страницы или потому, что встроенное решение не очень хорошо?
Имеет ли Rails встроенное решение для разбивки на страницы?
Ответ 1
В Rails 2.0 возможность разбиения на страницы ActionController была удалена и превращена в плагин для обратной совместимости, называемый "classic_pagination". Однако из моих поисков решения для разбивки на страницы для меня консенсус, похоже, заключается в том, что использование "classic_pagination" не является оптимальным.
После просмотра нескольких подкастов и после нескольких рекомендаций я решил попробовать плагин will_paginate и не оглядывался назад. Он быстрый, простой в использовании и ухоженный.
Я считаю, что даже V2 из Searchlogic рекомендует его использование.
Ответ 2
Если вы используете Rails 3, плагин Kaminari будет очень удобен для разбивки на страницы. Github Railscasts
Ответ 3
Rails имеет встроенную разбивку на страницы, но это простой модуль и не подходит для всех потребностей. Если у вас нет особых требований к разбивке на страницы, это должно соответствовать большинству целей.
Вот хорошая статья о том, как использовать разбиение на страницы Rails
Ответ 4
Я бы рекомендовал searchlogic. Он имеет разбиение на страницы и множество других вещей.
- Простая фильтрация
- Разбивка
- Сортировка
И.. для всех этих приятных помощников.
В коде указано более тысячи слов (не путайте пример HAML, вы можете использовать обычные шаблоны erb, если вы предпочитаете их, код/структура одинакова):
Контроллер:
def index
@search = User.new_search(params[:search])
@users, @users_count = @search.all, @search.count
end
Материал для разбивки на страницы:
== Per page: #{per_page_select}
== Page: #{page_select}
Сортировка по показаниям:
- unless @users_count.zero?
%table
%tr
%th= order_by_link :account => :name
%th= order_by_link :first_name
%th= order_by_link :last_name
%th= order_by_link :email
- @users.each do |user|
%tr
%td= user.account? ? user.account.name : "-"
%td= user.first_name
%td= user.last_name
%td= user.email
Легкие, простые и быстрые фильтры:
- form_for @search do |f|
- f.fields_for @search.conditions do |users|
= users.text_field :first_name_contains
= users.date_select :created_after
- users.fields_for users.object.orders do |orders|
= orders.select :total_gt, (1..100)
= f.submit "Search"
И все работает вместе, поэтому изменение страницы, а затем сортировка и добавление фильтра работают без потери каких-либо других настроек:).
Все, что вам нужно, это в вашей среде. rb:
config.gem "searchlogic"
и установите его с помощью: rake gems:install
Также проверьте онлайн-пример