Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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"`
like image 640
user2462805 Avatar asked Jun 14 '13 09:06

user2462805


3 Answers

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

This was the stupid issue in my case.

like image 147
Sebyddd Avatar answered Oct 16 '22 08:10

Sebyddd


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" 
like image 33
toro2k Avatar answered Oct 16 '22 09:10

toro2k


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

like image 3
Alexander Kobelev Avatar answered Oct 16 '22 09:10

Alexander Kobelev