1

我对 Ruby on Rails的Administrate gem非常陌生。我无法按“发布时间”对帖子进行排序/排序。记录似乎是按他们的 id 而不是published_at日期排序的,我怎样才能让它工作?

在 Heroku 上查看示例应用程序: https ://administrate-prototype.herokuapp.com/admin/blog/posts

提前致谢

4

3 回答 3

2

您正在寻找Model.order功能,这里是文档: https ://guides.rubyonrails.org/active_record_querying.html#ordering

于 2020-01-11T09:32:13.570 回答
1

如果您有一个名为 的模型Post,则在控制器函数show或您正在使用的任何其他函数中定义它时,您可以获得如下所示的记录,以便它按 published_at 排序

Post.order(published_at: :desc) # ActiveRecord ordering
# OR
Post.sort_by(&:published_at) # pure Ruby sorting implementation

如果您总是希望它按 published_at 排序,您可以使用 default_scope of rails ,Post如下所示 -

default_scope { order(published_at: :desc) }
于 2020-01-11T16:50:23.363 回答
1

很简单,你需要修改它request.query_parameters才能params完成你的工作。


这是一个例子

# app/controllers/admin/users_controller.rb
# frozen_string_literal: true

module Admin
  class UsersController < Admin::ApplicationController
    before_action :default_params

    def default_params
      request.query_parameters[:user]             ||= {}    # change :user --> your resource
      request.query_parameters[:user][:order]     ||= :id   # your field
      request.query_parameters[:user][:direction] ||= :desc # your direction
    end
于 2021-12-17T11:07:54.077 回答