【问题标题】:params[:page] carry-over in will_paginatewill_paginate 中的 params[:page] 结转
【发布时间】:2016-04-01 03:41:49
【问题描述】:

在我们的应用程序中,有一个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 的第二页时,params[:page] 被设置为2。然后order items 列表将以params[:page] = 2 开头,而不是页面1。这会导致order items 的第 1 页没有列出。有没有很好的方法来解决这个由params[:page] 结转引起的问题?

【问题讨论】:

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


    【解决方案1】:

    我们通过使用以下代码(在 before_action 中)为每个控制器记住 params[:page] 解决了这个问题

    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 时浮动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多