Есть ли в Rails встроенное решение для нумерации страниц? - PullRequest
29 голосов
/ 09 июня 2009

Я заметил, что драгоценные камни нумерации, такие как mislav-will_paginate, довольно популярны. Это потому, что у Rails нет встроенного решения для разбивки на страницы или потому что встроенное решение не очень хорошо?

Ответы [ 4 ]

28 голосов
/ 09 июня 2009

В Rails 2.0 возможность разбиения на страницы ActionController была удалена и превращена в плагин для обратной совместимости, называемый «classic_pagination». Тем не менее, из моих поисков решения для нумерации страниц я пришел к выводу, что использование 'classic_pagination' не является оптимальным.

После просмотра нескольких подкастов и после нескольких рекомендаций я решил попробовать плагин will_paginate и не оглядывался назад. Это быстро, просто в использовании и в хорошем состоянии.

Я считаю, что даже V2 из Searchlogic рекомендует его использовать.

15 голосов
/ 16 июня 2011

Если вы используете Rails 3, плагин Kaminari будет очень удобен для разбиения на страницы. Github Railscasts

8 голосов
/ 09 июня 2009

Rails имеет встроенную нумерацию страниц, но это простой модуль и не подходит для всех нужд. Если, конечно, у вас нет особых потребностей в нумерации страниц, они должны подходить для большинства целей.

Вот хорошая статья о том, как использовать разбиение на Rails

3 голосов
/ 09 июня 2009

Я бы порекомендовал 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

Также посмотрите онлайн пример

...