2016-03-17 6 views
5

Ich benutze Kaminari und Fehler.Kaminari undefined Methode `total_pages '

Gemfile:

# gem 'will_paginate', '~> 3.0.6' 
# gem 'will_paginate-bootstrap' 

gem 'kaminari' 

lists_controller.rb

def index 
    if params[:tag] 
     @lists = List.tagged_with(params[:tag]).order(created_at: :desc).paginate(page:params[:page], per_page: 3) 
    else 
     @lists = List.all.order(created_at: :desc) 
    end 
    end 

ich auch Benutzer .page params[:page].per(2) folgen .order(created_at: :desc) aber nicht funktionieren

Ansichten/lists/index.html.erb

<%= paginate @lists %> 

der Fehler ist hier

undefined method `total_pages' for #<List::ActiveRecord_Relation:0x007fa2303e3fa8> 
Extracted source (around line #26):    
    </div> 
    </div> 
<%= paginate @lists %> 
    <div class="container"> 
    <div class="row"> 
     <div class="col-md-8"> 

Ich weiß nicht, wie zu tun, bin ich Railscasts über kaminari kopieren, und das Video ist Ok, ich habe einen Fehler haben. danke hilf mir.

Antwort

5

Sie benötigen beide Abfragen Paginieren. Ich empfehle etwas wie:

def index 
    if params[:tag] 
    @lists = List.tagged_with(params[:tag]) 
    else 
    @lists = List.all 
    end 
    @lists = @lists.order(created_at: :desc).paginate(page:params[:page], per_page: 3) 
end 

Ansonsten @lists wird kein Paginierung Objekt sein, wenn params[:tag] Null ist.

+0

Danke eine Million! Es funktioniert, sehr, sehr danke. Liste hinzufügen . user.page (params [: page]). per (5) '' '@listen = @ lists.order (created_at:: desc) .page (params [: page]). per (5)' '' die Seite OK. – dongdongxiao

+0

@ user5590209 Wenn ich Ihr Problem gelöst habe, akzeptieren Sie bitte meine Antwort, indem Sie das Häkchen daneben drücken. – Shelvacu

+0

danke erinnern, ich bin neu hier gekommen. jetzt ist es ok? Wählen Sie Ihre Antwort ist am besten und chick nike logo. – dongdongxiao

0

Versuchen mit Paginieren:

List.tagged_with(params[:tag]).order(created_at: :desc).page(params[:page]).per(3) 
+1

Vielen Dank Ihre Antwort. Ich mache es, aber keine Arbeit. – dongdongxiao