user2462805
user2462805

Reputation: 1069

Undefined method `paginate'

I'm trying to use the will_paginate gem but something's wrong. I'm stuck with an undefined method `paginate' error. I read many issues and try a lot of things. Here's what I've got :

This is my LocationsController.rb:

def index
  @locations = Location.all    
  respond_to do |format|
    @locations = @locations.paginate(:page => params[:page], :per_page => 10) 
    format.html  #index.html.erb
    format.json { render json: @locations }
  end 
end

And this is my will_paginate's line in my index.html.erb:

<%= will_paginate @locations %>

And this is the error:

undefined method `paginate' for #<Class:0xaa2e48c>

I also add the require part in my Gemfile:

gem "will_paginate", "~> 3.0.4", :require => nil

And this at the end of my environment.rb:

require "will_paginate"`

Upvotes: 9

Views: 24450

Answers (4)

Arhum Ali
Arhum Ali

Reputation: 1

if anyone comes here looking for answer why <%= will_paginate %> is not working or giving an error of wrong arguments . please do this once

1- replace your gem file will paginate gem with this gem "will_paginate", "~> 3.1.7"

2- then run 'bundle install' in your console and restart server.

i hope this will help someone.

Upvotes: 0

Sebyddd
Sebyddd

Reputation: 4315

Make sure to restart the server after installing the 'will_paginate' gem.

This was the stupid issue in my case.

Upvotes: 26

toro2k
toro2k

Reputation: 19230

will_paginate doesn't work like that. paginate is a method of the Location class:

def index
  @locations = Location.paginate(page: params[:page], per_page: 10) 
  respond_to do |format|
    format.html
    format.json { render json: @locations }
  end 
end

Moreover, to use will_paginate you should just need to add the line below in your Gemfile, no modification in environment.rb is required:

gem "will_paginate", "~> 3.0.4" 

Upvotes: 17

Alexander Kobelev
Alexander Kobelev

Reputation: 1379

You try to paginate array. Try this:

def index
   @locations = Location.paginate(:page => params[:page], :per_page => 10)   

     respond_to do |format|
      format.html  #index.html.erb
      format.json { render json: @locations }
    end 
  end

If you want to paginate array see Paginating an Array in Ruby with will_paginate

Upvotes: 3

Related Questions