2016-03-17 28 views
5

Uso kaminari e errore.kaminari metodo undefined `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 

Ho anche all'utente .page params[:page].per(2) seguire .order(created_at: :desc) ma non funziona

views/lists/index.html.erb

<%= paginate @lists %> 

l'errore è qui

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

non so come fare, io copio Railscasts su kaminari, e il video è ok, ho un bug. grazie aiutami.

risposta

5

È necessario impaginare entrambe le query. Mi raccomando qualcosa come:

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 

Altrimenti @lists non sarà un oggetto impaginazione quando params[:tag] è pari a zero.

+0

Grazie mille! Funziona, molto molto grazie. aggiungi @list. user .page (params [: page]). per (5) '' '@lists = @ lists.order (created_at:: desc) .page (params [: page]). per (5)' '' la pagina OK. – dongdongxiao

+0

@ user5590209 Se ho risolto il problema, si prega di accettare la mia risposta premendo il segno di spunta accanto ad essa. – Shelvacu

+0

grazie, ricordo, sono nuovo, vieni qui. ora va bene? scegli la tua risposta è meglio e chick nike logo. – dongdongxiao

0

Prova a impaginare con:

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

Grazie della risposta. Lo faccio, ma non lavoro. – dongdongxiao