【问题标题】:Best way to implement sort asc or desc in rails在 Rails 中实现排序 asc 或 desc 的最佳方法
【发布时间】:2012-04-09 02:47:17
【问题描述】:

有没有一种优雅的方式来在 rails 的视图/控制器中实现排序 asc 和 desc 操作?

我拥有的是通用 index.html.erb 视图,它列出了我的某个模型的所有数据,我想添加一些小按钮(或使标题可点击)来对该列的列表进行升序或降序排序。我想知道是否有一种优雅而有效的方法可以做到这一点,或者我应该为我希望执行此操作的每一列(或按钮)添加一个新控制器。

【问题讨论】:

    标签: ruby-on-rails-3 sorting


    【解决方案1】:

    这里是数据关系,向您展示我们如何按加入顺序访问名称

    @results = Result.has_pro.ascending(:name).page(params[:page])
    

    【讨论】:

      【解决方案2】:

      我最近使用了一个名为 sorted 的 gem,如果您想为此使用预打包的解决方案而不是推出自己的解决方案,效果很好。

      https://github.com/mynameisrufus/sorted

      【讨论】:

        【解决方案3】:

        这是我正在使用的两个示例。第一个 @plans 是我只想从最低到最高排序的小数。另一个例子有点复杂,我想按从最新到最旧的顺序排列用户文件。然后,我使用第二个变量按创建日期对文件进行分组。这两个示例都在控制器中执行。

        @plans = Plan.order("price")
        
        @files= @user.files.order("id DESC").all
        @dates = @files.group_by { |t| t.created_at }
        

        有关您视图中的可点击按钮,请查看 Ryan Bates 的 Railscast 剧集,其中涵盖此信息。

        http://railscasts.com/episodes/228-sortable-table-columns

        【讨论】:

        • 这段代码应该在视图、控制器还是助手中实现?
        • 如果您是静态类型,那么执行@user.files.order(id: :desc) 是最优雅的方式。如果它的动态效果更好,那就做@user.files.order("#{criteria} #{direction}")
        • @kobaltz:很好的答案,帮助了我:)
        猜你喜欢
        • 2014-07-25
        • 2015-03-05
        • 2018-05-26
        • 1970-01-01
        • 2010-10-27
        • 2017-10-27
        • 2014-07-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多