【问题标题】:Jump to page using Kaminari Gem使用 Kaminari Gem 跳转到页面
【发布时间】:2016-03-24 14:17:29
【问题描述】:

我正在尝试在链接到分页列表中的项目后添加分页。我似乎无法找到一种方法来做到这一点或找到答案。我正在尝试在页面上显示图像列表,我想做的是,当单击图像时,用户将转到该单独的图像页面,然后在页面上会有“下一个”链接到下一个列表中的图像。 所以,假设我有一个按此顺序排列的图像列表[1, 5, 3, 6, 4, 7, 8, 2, 9, 10 ] 每页显示 5 个。用户单击 id: 5 的图像(列表中的第 1 位)并被带到“/images/5”。如何从那里添加指向此列表中下一张图片的链接(id:3)等等?

在图像控制器中

def index
  @list = Images.first(10).shuffle
  @images = Kaminari.paginate_array(@list).page(params[:page]).per(5)
end

在相应的视图中我还需要什么?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 pagination kaminari


    【解决方案1】:

    您必须记住之前图像被打乱的顺序。例如,您可以将其保存在会话中

    def index
      @list = Images.first(10).shuffle
      session[:image_list] = @list.map(&:id)
      @images = Kaminari.paginate_array(@list).page(params[:page]).per(5)
    end
    

    然后在显示一张图片时,您可以在session[:image_list]中查找显示图片的索引,并将下一张图片的id保存在实例变量中

    def show
      idx = session[:image_list].index(shown_image_id)
      @next_image_id = session[:image_list][idx + 1]
      # Do some more stuff for showing image
    end
    

    然后使用@next_image_id 创建指向下一张图片的链接。还有一些棘手的事情要做,例如。 G。 @next_image_id 应该是什么,如果它是最后一张图片等等,但这应该能让你开始。

    【讨论】:

    • 谢谢。这让我现在朝着正确的方向前进。我在尝试将列表存储到会话时遇到 CookieOverflow 错误
    • 是的,你不能放太多信息(比如完整的活动记录实例)。我建议你只在那里保存 ID。我会更新我的答案。
    • 再次感谢。这是我最需要的。
    • 旁注:如果我需要将多个列表存储到每个用户的会话中,我可以在不切换到 active_record_store 的情况下执行此操作吗?我可以在不超过 4kb 限制的情况下执行此操作吗?
    • 取决于您的列表有多大...如果有多个 10 的大小,那么这应该不是问题。
    猜你喜欢
    • 2016-04-15
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 2016-06-17
    相关资源
    最近更新 更多