params [:page]结转在will_paginate

时间:2016-03-29 17:59:46

标签: ruby-on-rails pagination will-paginate

在我们的应用中,有一个purchase orders列表,其中包含order items。两个列表都使用will_paginate。以下是purchase orders的代码:

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

以下是order items的代码:

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

如代码所示,他们都在params[:page]回复以开始。问题是当用户打开时,例如purchase orders的第2页,params[:page]设置为2。然后,order items列表将以params[:page] = 2而不是页面1开头。这导致order items的第1页没有列出。有没有一种很好的方法来解决由params[:page]结转引起的这个问题?

1 个答案:

答案 0 :(得分:0)

我们通过记忆params [:page]解决了这个问题,每个控制器都有以下代码(在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

上述解决方案的潜在问题是,我们无法重置session[key_sym],并且可能会在下一个index中浮动。

相关问题