Как отсортировать записи по опубликованным в?
Я новичок в геме администрирования для Ruby on Rails. Я не могу отсортировать / упорядочить посты по "Опубликовано в". Кажется, что записи упорядочены по их идентификаторам, а не поpublished_at
дата, как я могу заставить его работать?
См. Пример приложения на Heroku:https://administrate-prototype.herokuapp.com/admin/blog/posts
заранее спасибо
3 ответа
Вы ищете Model.order
функции, вот документы:https://guides.rubyonrails.org/active_record_querying.html
Если у вас есть модель с именем Post
, при определении его в функции контроллера show
или любой другой, который вы используете, вы можете получить запись, как показано ниже, чтобы она была отсортирована по опубликованному_at
Post.order(published_at: :desc) # ActiveRecord ordering
# OR
Post.sort_by(&:published_at) # pure Ruby sorting implementation
Если вы всегда хотите, чтобы он был отсортирован по published_at, вы можете использовать default_scope рельсов в Post
как показано ниже -
default_scope { order(published_at: :desc) }
Это просто, вам нужно изменить
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