Лучший способ реализовать сортировку asc или desc в рельсах - PullRequest
19 голосов
/ 25 марта 2012

Существует ли элегантный способ реализации действий сортировки asc и desc в представлениях / контроллерах в rails?

У меня есть общее представление index.html.erb, в котором перечислены все мои данные определенныхмодель и я хочу добавить несколько маленьких кнопок (или сделать заголовок кликабельным), чтобы отсортировать список по возрастанию или убыванию этого столбца.Мне интересно, есть ли элегантный и эффективный способ сделать это, или я просто должен добавить новый контроллер для каждого столбца (или кнопки), я хочу, чтобы это действие произошло.

Ответы [ 3 ]

35 голосов
/ 25 марта 2012

Вот два примера, которые я использую.Первый с @plans - это то, где я просто хочу заказать десятичную дробь от самой низкой до самой высокой.Другой пример немного сложнее, когда я хочу упорядочить пользовательские файлы от самых новых до самых старых.Затем я использовал вторую переменную для группировки файлов по дате создания.Оба примера выполнялись в контроллерах.

@plans = Plan.order("price")

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

Для интерактивных кнопок, которые вы видите, посмотрите эпизод Раяна Бейтса, посвященный Railscast, который охватывает эту информацию.

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

3 голосов
/ 26 марта 2012

Недавно я использовал гем под названием sorted с хорошими результатами, если вы хотите использовать для этого готовое решение вместо того, чтобы выкатывать свое собственное.

https://github.com/mynameisrufus/sorted

0 голосов
/ 21 октября 2015

вот соотношение данных, которое показывает вам, как мы обращаемся к имени в порядке поступления

@results = Result.has_pro.ascending(:name).page(params[:page])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...