Имеет ли Rails встроенное решение для разбивки на страницы?
Я заметил, что драгоценные камни, такие как mislav-will_paginate
, довольно популярны. Это потому, что 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
Также проверьте онлайн-пример