web-dev-qa-db-ja.com

Railsにはページネーションソリューションが組み込まれていますか?

mislav-will_paginateのようなページネーションの宝石が非常に人気があることに気づきました。これは、Railsにページネーションソリューションが組み込まれていないためですか、それとも組み込みソリューションがあまり良くないためですか?

29
propstop

Rails 2.0では、ActionControllerのページ付け機能が削除され、「classic_pagination」と呼ばれる下位互換性のためのプラグインになりました。しかし、私自身のページ付けソリューションの検索から、コンセンサスは、 'classic_pagination'は最適ではありません。

いくつかのポッドキャストを見た後、いくつかの推奨事項の後、私は will_paginate プラグインを試すことを選択しましたが、振り返りませんでした。高速で使いやすく、手入れが行き届いています。

SearchlogicのV2でさえその使用を推奨していると思います。

28
digitalpardoe

Rails 3 Kaminariプラグインは、ページ付けに非常に便利です。 GithubRailscasts

15
Evgenii

Railsにはページネーションが組み込まれていますが、これは単純なモジュールであり、すべてのニーズに適しているわけではありません。ただし、特定のページ付けのニーズを念頭に置いていない限り、ほとんどの目的に適しているはずです。

これは使用方法に関する良い記事ですRailsページネーション

8
workmad3

私はお勧めします searchlogic 。ページネーションが組み込まれており、他にも多くの優れた機能があります。

  • 簡単なフィルタリング
  • ページネーション
  • 並べ替え

そして..その素敵なヘルパーのすべてのために。

コードによると、1000語以上(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"

そして、すべてが連携して機能するため、ページを変更してから並べ替え、フィルターを追加しても、他の設定を失うことなく機能します:)。

必要なのはenvironment.rbにあります:

config.gem "searchlogic"

そしてそれをインストールします:rake gems:install

オンライン例 もチェックアウトしてください

3
reto