【问题标题】:Pagination and sorting in a Rails RESTful applicationRails RESTful 应用程序中的分页和排序
【发布时间】:2010-10-15 03:55:20
【问题描述】:

关于如何在 Rails 应用程序中对资源实现排序和分页并仍然保持 RESTful 的任何提示?

如何以干净的方式映射页码和排序字段的参数? (我目前正在为我的应用程序中的每个资源使用 map.resources :x

我应该知道的任何其他性能问题? (例如缓存)

提前致谢。

编辑我将问题重新表述为更多generic one,希望我能得到更多答案。我将投票关闭这个,因为它不再相关。感谢 insane-dreamer 和 vrish88 的回答。

【问题讨论】:

    标签: ruby-on-rails rest sorting pagination


    【解决方案1】:

    我建议你看看这篇文章:

    http://dev.nozav.org/rails_ajax_table.html

    http://dev.nozav.org/ajaxtable/(这是演示应用程序)

    我在我的一个应用程序中使用了相同的基本代码。我没有使用他们描述的 AJAX 实现,但我使用了他们提到的排序助手,然后我构建了我的视图以启用排序。在排序助手中,您只想取出与 ajax 相关的东西。我的最终看起来像这样:

    def sort_link_helper(text, param)
      key = param
      key += "_reverse" if params[:sort] == param
      parameters = params.merge({:sort => key, :page => params[:page], :action => controller.action_name })
      link_to(text, url_for(parameters))
    end
    
    def sort_td_class_helper(param)
      result = 'class="sortup"' if params[:sort] == param
      result = 'class="sortdown"' if params[:sort] == param + "_reverse"
      return result
    end
    

    这个实现最好的部分是它是 RESTful、DRY 和易于使用的!

    【讨论】:

    • 感谢您的回复,但是.. 在这种情况下缓存呢?我想我会遇到这个问题。此外,恕我直言,使用 "?page=x&sort=y" 不是很干净。
    • 嗯,我对缓存不太了解,但你不能只存储 sql 查询的结果,然后对缓存中的结果进行排序吗?此外,我不知道任何其他方式来存储页面和排序变量是有意义的......但我愿意接受建议
    • "注意:页面缓存会忽略所有参数,因此 /products/list?page=1 将作为 /products/list.html 写入文件系统,如果有人请求 /products/list?page =2,它们将返回与page=1相同的结果。页面缓存URL中的GET参数时要小心!”
    • 看看这个:railsenvy.com/2007/2/28/rails-caching-tutorial#pagination。它摆脱了分页问题,​​但没有解决排序问题。
    【解决方案2】:

    你试过 will_paginate 吗?是否有某些原因它不能满足您的特定需求? (http://github.com/mislav/will_paginate/tree/master)

    【讨论】:

    • 我已经在使用 will_paginate 插件了。我希望有更多关于 REST 部分的答案。我想我会重新提出问题,删除“特定于导轨”的部分。
    猜你喜欢
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 2015-10-29
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    相关资源
    最近更新 更多