kaminari undefined method `total_pages'
14,263
Solution 1
You need to paginate both queries. I recommend something like:
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
Otherwise @lists
will not be a pagination object when params[:tag]
is nil.
Solution 2
Try to paginate with:
List.tagged_with(params[:tag]).order(created_at: :desc).page(params[:page]).per(3)
Related videos on Youtube
Author by
dongdongxiao
Updated on September 16, 2022Comments
-
dongdongxiao over 1 year
While using kaminari, I got an error.
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
I also user
.page params[:page].per(2)
follow.order(created_at: :desc)
but not workviews/lists/index.html.erb
<%= paginate @lists %>
the error is here
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">
I was following a railscasts video about kaminari, but they did not have any error.
-
dongdongxiao about 8 yearsThanks a million! It work ,very very thanks. add @list . user .page(params[:page]).per(5) ``` @lists = @lists.order(created_at: :desc).page(params[:page]).per(5) ``` the page OK.
-
Shelvacu about 8 years@user5590209 If I've solved your problem please accept my answer by hitting the check mark next to it.
-
dongdongxiao about 8 yearsthanks remind, I am new come here. now is it ok ? choose your answer is best and chick nike logo.
-
D7na about 6 yearsWorks for me. Thanks