2016-03-17 18 views
5

Używam kaminari i błędu.kaminari undefined metoda `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 

ja też użytkownik .page params[:page].per(2) śledzić .order(created_at: :desc) ale nie działa

views/lists/index.html.erb

<%= paginate @lists %> 

błąd jest tutaj

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

nie wiem jak to zrobić, mam skopiować railscasts o Kaminari, a film jest ok, mam problem. dzięki, pomóżcie mi.

Odpowiedz

5

Trzeba paginate oba pytania. Ja polecam coś takiego:

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 

Inaczej @lists nie będzie przedmiotem paginacja gdy params[:tag] jest zerowa.

+0

Dzięki za milion! Działa, bardzo, bardzo dziękuję. Dodaj listę . user .page (parametry [: strona]). per (5) '' '@lists = @ lists.order (created_at:: desc) .page (parametry [: strona]). za (5)' '' strona OK. – dongdongxiao

+0

@ user5590209 Jeśli rozwiązałem Twój problem, zaakceptuj moją odpowiedź, klikając na znacznik wyboru obok niego. – Shelvacu

+0

dzięki przypomnienia, jestem nowy, chodź tutaj. teraz jest w porządku? wybierz odpowiedź jest najlepsza i logo chick nike. – dongdongxiao

0

Spróbuj paginate z:

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

Dziękuję za odpowiedź. Robię to, ale bez pracy. – dongdongxiao