Подтвердить что ты не робот

Лучший способ реализовать сортировку asc или desc в рельсах

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

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

4b9b3361

Ответ 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])