Лучший способ реализовать сортировку asc или desc в рельсах
Есть ли элегантный способ реализовать сортировку asc и desc в представлениях/контроллерах в rails?
У меня есть общее представление index.html.erb, в котором перечислены все мои данные определенной модели, и я хочу добавить небольшие кнопки (или сделать заголовок кликабельным), чтобы отсортировать список по возрастанию или по убыванию этого столбца. Мне интересно, есть ли элегантный и эффективный способ сделать это, или я должен просто добавить новый контроллер для каждого столбца (или кнопки). Я хочу, чтобы это действие произошло.
Ответы
Ответ 1
Вот два примера, которые я использую. Первый с @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
Ответ 2
Недавно я использовал драгоценный камень под названием sorted
с хорошими результатами, если вы хотите использовать предварительно упакованное решение для этого вместо того, чтобы выталкивать свои собственные.
https://github.com/mynameisrufus/sorted
Ответ 3
вот отношение данных, которое показывает вам, как мы обращаемся к имени в порядке доступа
@results = Result.has_pro.ascending(:name).page(params[:page])