2009-06-08 8 views
29

Ich habe bemerkt, dass Paginierung Edelsteine ​​wie mislav-will_paginate sehr beliebt sind. Liegt das daran, dass Rails keine integrierte Paginierungslösung hat oder weil die integrierte Lösung nicht sehr gut ist?Hat Rails eine integrierte Paginierungslösung?

+1

will_paginate ist so ziemlich eigentlich die „integrierte“ Lösung in diesen Tagen/ –

+0

scheint searchlogic will_paginate verwendet, so brauchen Sie nicht searchlogic zu verwenden, um es zu bekommen. Es sieht jedoch ziemlich cool aus. http://rdoc.info/github/binarylogic/searchlogic/master/file/README.rdoc#Pagination_(leverage_will_paginate) – calasyr

Antwort

3

würde ich searchlogic empfehlen. Es hat Paginierung eingebaut und viele andere Dinge.

  • Einfache Filterung
  • Paginierung
  • Sortierung

Und .. für all den netten Helfer.

-Code sagt mehr als tausend Worte (tun sie nicht durch die HAML Beispiel verwirren zu lassen, können Sie normale erb-Vorlagen verwenden, wenn Sie sie bevorzugen, wird der Code/Struktur ist die gleiche):

Controller:

def index 
    @search = User.new_search(params[:search]) 
    @users, @users_count = @search.all, @search.count 
    end 

Paginierung Sachen in der Ansicht:

== Per page: #{per_page_select} 
== Page: #{page_select} 

Sortieren nach/von im Blick:

- 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 

Einfache, einfache und schnelle Filter:

- 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" 

Und alles funktioniert zusammen, so eine Seite zu ändern und dann die Sortierung und das Hinzufügen eines Filters arbeitet, ohne eine der anderen Einstellungen :) zu verlieren.

Alles was Sie brauchen in Ihrem environment.rb ist:

config.gem "searchlogic" 

und installieren Sie es mit: rake gems:install

Auch Kasse der online example

+0

Wie ist das mit den zahlreichen anderen Paginierungslösungen zu vergleichen? Warum wählen Sie dies gegenüber den anderen? – propstop

+0

Nun, das vorherige, was ich verwendet habe, war wil_paginate, das war der Standard-Paginator. Die Schönheit der searchlogic ist a) dass alles integriert ist (Sie müssen nicht Paginator Arbeit zusammen filtern/sortieren, das ist automatisch/magisch getan). Und b) es ist ziemlich aktiv ATM entwickelt und es sieht ziemlich ausgereift aus. c) Der Entwickler produziert sehr nette und intuitive Bibliotheken, ich würde auch seine Auth-Bibliothek 'authlogic' empfehlen. In der Dokumentation finden Sie einige Hinweise, warum authlogic "besser" ist als die anderen Auth-Plugins :). Aber versuchen Sie es einfach in einer Ihrer Daten Ansichten .. – reto

+1

Ah was für ein tolles Timing: http://github.com/binarylogic/searchlogic/tree/v2 – reto

28

In Rails 2.0 die Paginierung Fähigkeit von Actioncontroller entfernt wurde und verwandelte sich in ein Plugin für die Rückwärtskompatibilität namens 'classic_pagination'. Aus meinen Recherchen für eine Paginierungslösung für mich selbst scheint jedoch der Konsens zu bestehen, dass die Verwendung von "classic_pagination" nicht optimal ist.

Nachdem ich ein paar Podcasts angeschaut habe und nach mehreren Empfehlungen, habe ich mich entschieden, das will_paginate Plugin auszuprobieren und habe nicht zurückgeschaut. Es ist schnell, einfach zu bedienen und gut gepflegt.

Ich glaube, dass sogar V2 von Searchlogic seine Verwendung empfiehlt.

+0

Ich kam zu dem gleichen Schluss. Das railscasts-Tutorial zu will_paginate war ebenfalls sehr hilfreich. – tstyle

15

Wenn Sie Rails 3 verwenden, ist das Kaminari-Plugin sehr praktisch für die Paginierung. Github Railscasts

+0

+1 für Kaminari. Ich benutzte Will_paginate, aber Kaminari ist viel schöner. – kakubei