will_paginate traitor significado rails per page naruto bootstrap ruby-on-rails ruby kaminari

ruby-on-rails - traitor - rails will_paginate per page



Paginación de Kaminari y Rails-método indefinido `current_page '' (3)

Busqué y busqué, pero nada resolvió mi problema. Aquí está mi controlador:

def show @topic = Topic.find(params[:id]) @topic.posts = @topic.posts.page(params[:page]).per(2) # 2 for debugging end

Eso funciona bien, porque la vista del tema se reduce a dos publicaciones. Sin embargo, cuando agrego esto a show.html.erb:

<%= paginate @topic.posts %>

Me han dado este error:

undefined method `current_page'' for #<ActiveRecord::Relation:0x69041c9b2d58>


Hace algún tiempo, tuve un pequeño problema con kaminari que resolví usando diferentes nombres de variables para cada acción.

Digamos que en la acción de index llamamos algo así como:

def index @topic = Topic.all.page(params[:page]) end

La vista de index funciona bien con <%= paginate @topic %> sin embargo, si desea usar el mismo nombre de variable en cualquier otra acción, se produce un error como ese.

def list # don''t use @topic again. choose any other variable name here @topic_list = Topic.where(...).page(params[:page]) end

Esto funcionó para mí.

Por favor, dale una oportunidad.


Prueba con:

def show @topic = Topic.find(params[:id]) @posts = @topic.posts.page(params[:page]).per(2) end

Y entonces:

<%= paginate @posts %>


Si obtienes errores de paginación en Kaminari como

método indefinido `total_pages ''

o

método indefinido `current_page ''

es probable porque el alcance de AR que ha pasado a paginate no ha tenido el método de page llamado.

¡Asegúrese de llamar siempre a la page en los ámbitos que pasará para paginate !

Esto también es válido si tiene una matriz que ha decorado utilizando Kaminari.paginate_array

Malo:

<% scope = Article.all # You forgot to call page :( %> <%= paginate(scope) # Undefined methods... %>

Bueno:

<% scope = Article.all.page(params[:page]) %> <%= paginate(scope) %>

O con una matriz no AR de su propia ...

Malo:

<% data = Kaminari.paginate_array(my_array) # You forgot to call page :( %> <%= paginate(data) # Undefined methods... %>

Una vez más, esto es bueno:

<% data = Kaminari.paginate_array(my_array).page(params[:page]) %> <%= paginate(data) %>