2016-03-29 1 views
1

Dans notre application, il y a une liste de purchase orders qui ont order items. Les deux listes utilisent will_paginate. Voici le code pour purchase orders:params [: page] report dans will_paginate

@orders = @orders.page(params[:page]).per_page(30) 

Voici le code pour order items:

@order_items = @order_items.page(params[:page]).per_page(30) 

Comme le code montre, les deux réponse sur params[:page] pour commencer. Le problème est que lorsqu'un utilisateur est sur, par exemple, la 2ème page du purchase orders, le params[:page] est défini sur 2. Ensuite, la liste order items va commencer par params[:page] = 2 au lieu de la page 1. Cela provoque la non-liste de la page 1 pour order items. Est-il une bonne façon de résoudre ce problème causé par params[:page] report?

Répondre

0

Nous avons résolu la question par params mémorisent [: page] pour chaque contrôleur avec le code ci-dessous (en before_action)

def page_params 
    key_sym = ('page_' + params[:controller].sub('/', '_')).to_sym 
    if params[:page] then 
    session[key_sym] = params[:page] 
    elsif session[:key_sym] 
    params[:page] = session[:key_sym] 
    end 
end 

Le problème potentiel avec la solution est au-dessus que nous ne pouvons pas réinitialiser session[key_sym] et il peut être en train de flotter pour le prochain index.