2014-02-21 5 views
1

У меня есть раскрывающийся список «Сортировать по» на странице событий, где пользователи могут просматривать несколько событий, и я хочу разрешить пользователям сортировать события по имени (Alphebetical), Date (Created_At) и, возможно, (количество люди, посещающие hi/low).Как добавить сортировку по параметрам?

Как я могу это достичь? Я предполагаю, что с областью по умолчанию: order, Event.where (: name, ASC), например, но я не уверен, поскольку я никогда не делал этого раньше. Также как мне отобразить/использовать область в выпадающем меню ?

ответ

2

Я recommed вам очень-полезную гем has_scope: https://github.com/plataformatec/has_scope

Что вы можете сделать с ним:

class Event < ActiveRecord::Base 
    scope ordered, lambda do |attribute, order| 
    return where("FALSE") unless self.attribute_names.include?(attribute.to_s) 
    order(attribute.to_sym, order.to_sym 
    end 


class EventsController < ApplicationController 
    has_scope :ordered do |controller, scope, value| 
    scope.ordered(value, :desc) 
    end 

# view 
options = [['Name', 'name'], ['Date', 'date']] 
select_tag("ordered", options_for_select(options, selected: params[:ordered]), onchange: "window.location.href = window.location.origin + window.location.pathname + '?ordered=' + $(this).val();" 

Я не проверял мнение, вы, возможно, придется изменить код немного немного. Переадресация javascript не поддерживает дополнительные параметры GET!

+0

УДИВИТЕЛЬНЫЙ !!! Не могли бы вы поделиться тем, как я буду реализовывать это в представлении? Спасибо! –

+0

Я добавил пример @SonnyBlack – MrYoshiji

0

Для активной записи вам просто нужно добавить .order (symbol) в ваш активный запрос записи.

для алфавита вы могли бы сделать.

Object.where(ARRGUMENT).order(:name) 

или для всех

Object.order(:name) 

Вам не нужно использовать рамки для этого более чем убить за что-то это просто.

Если вы хотите создать интерактивную таблицу, вы можете рассмотреть решение Javascript. Это тот, который работал лучше для меня.

https://datatables.net/

Я использовал и в настоящее время использую этот драгоценный камень с большим успехом.

https://github.com/rweng/jquery-datatables-rails

Смежные вопросы