web-dev-qa-db-fra.com

Rails 4 pagination, will_paginate vs Kaminari en utilisant bootstrap3

Je comprends que Kaminari fonctionne bien avec Rails3 en lisant cet article: Rails 3 pagination, will_paginate vs. Kaminari , mais qu’en est-il de Rails4? En outre, lors de la stylisation avec Bootstrap3, quelle gemme est la solution la plus facile?

16
tkymtk

D'après mon expérience, il y a très peu de différence entre Kaminari & Will Paginate - il s'agit principalement d'un choix personnel que vous utilisez (plutôt comme Paperclip/Carrierwave ou Mac / Windows)

En termes de compatibilité, les deux gemmes fonctionnent nativement avec Rails 4


Bootstrap

En référence à Bootstrap, je pense que vous posez la mauvaise question

Bootstrap est un CSS framework , qui n’a aucune incidence sur les fonctionnalités d’arrière-plan de votre application.

En bout de ligne, vous allez devoir appeler les méthodes de pagination à partir de votre contrôleur. Ainsi, les différences entre les systèmes ne seront que superficielles. Si vous utilisez Bootstrap pour les styliser, vous devrez faire la même chose avec l'un ou l'autre

Donc, c'est à toi de choisir!

22
Richard Peck

Il est assez facile d'implémenter la pagination bootstrap de Twitter avec Kaminari. Il suffit de suivre les étapes ci-dessous:

  1. Ajoutez gem 'kaminari' à votre GemFile. Exécutez bundle install et redémarrez le serveur Rails
  2. Vérifiez les thèmes Kaminary - dans votre cas, vous avez besoin du thème bootstrap3
  3. Exécuter Rails g kaminari:views bootstrap3

C'est tout.

6
gotqn

Kaminari fonctionne très bien pour moi avec Rails 4.1.5

Vous pouvez le faire fonctionner avec Bootstrap 3 en modifiant une ligne de code dans le thème Bootstrap généré pour Kaminari

DansViews/Kaminari/_paginator.html.erb

Change cette ligne: <div class="pagination"><ul>

Pour ceci: <ul class="pagination pagination-lg">

..et se débarrasser de la div; utilisez simplement le ul ci-dessus - fonctionne bien pour moi.


Voici le code pour tout le partiel:

  <%= paginator.render do %>
  <ul class="pagination pagination-lg">
    <%= first_page_tag unless current_page.first? %>
    <%= prev_page_tag unless current_page.first? %>
    <% each_page do |page| %>
      <% if page.left_outer? || page.right_outer? || page.inside_window? %>
        <%= page_tag page %>
      <% elsif !page.was_truncated? %>
        <%= gap_tag %>
      <% end %>
    <% end %>
    <%= next_page_tag unless current_page.last? %>
    <%= last_page_tag unless current_page.last? %>
  </ul>
<% end %>
2
Jordan