2013-06-14 21 views
8

Sto provando a usare la gemma will_paginate ma qualcosa non va. Sono bloccato con un errore undefined method `paginate'. Leggo molti problemi e provo molte cose. Ecco quello che ho:Metodo non definito `paginate '

Questo è il mio 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 

E questa è la linea del mio will_paginate nel mio index.html.erb:

<%= will_paginate @locations %> 

e questo è l'errore:

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

Aggiungo anche la parte richiesta nel mio Gemfile:

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

E questo alla fine della mia environment.rb:

require "will_paginate"` 

risposta

14

will_paginate non funziona così. paginate è un metodo della classe Location:

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

Inoltre, per utilizzare will_paginate si dovrebbe solo bisogno di aggiungere la riga qui sotto nella tua Gemfile, non è richiesta alcuna modifica nella environment.rb:

gem "will_paginate", "~> 3.0.4" 
3

Si tenta per impaginare la matrice. Prova questo:

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 

Se vuoi impaginare serie vedere Paginating an Array in Ruby with will_paginate

12

Assicurarsi di riavviare il server dopo l'installazione del gioiello 'will_paginate'.

Questo è stato lo stupido problema nel mio caso.

+0

Ironicamente; Ho usato questa risposta come soluzione per me tre volte negli ultimi anni. Non importa cosa faccio; Non posso mai ricordare di riavviare Rails S dopo aver installato la gemma! –