2016-03-17 4 views
5

Я использую kaminari и ошибку.kaminari undefined method `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 

Я также пользователь .page params[:page].per(2) следовать .order(created_at: :desc) , но не работает

просмотров/списки/index.html.erb

<%= paginate @lists %> 

ошибка здесь

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

Я не знаю, как это сделать, я скопировать Railscasts о Kaminari и видео Хорошо, у меня есть ошибка. спасибо, помогите мне.

ответ

5

Вы должны постраничными оба запроса. Я рекомендую что-то вроде:

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 

В противном случае @lists не будет объектом нумерацией страниц, когда params[:tag] равен нулю.

+0

Спасибо, миллион! Он работает, очень спасибо. Добавить @list. user. (params [: page]). per (5) '' '@lists = @ lists.order (created_at:: desc) .page (params [: page]). per (5)' '' страница ОК. – dongdongxiao

+0

@ user5590209 Если я решил вашу проблему, примите мой ответ, нажав галочку рядом с ней. – Shelvacu

+0

благодарю, я новичок. теперь все в порядке? выберите свой ответ лучше всего и логотип chick nike. – dongdongxiao

0

Попробуйте постраничный с:

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

Спасибо, что ответили. Я делаю это, но не работаю. – dongdongxiao