2012-03-25 13 views
18

Czy istnieje elegancki sposób realizacji sortowania asc i operacji desc w widokach/kontroler w szynach?Najlepszy sposób implementowania asc sortowania lub desc w szynach

Mam wspólny widok index.html.erb, który zawiera wszystkie moje dane określonego modelu i chcę dodać kilka małych przycisków (lub sprawić, że tytuł jest klikalny), aby posortować listę rosnąco lub malejąco tej kolumny . Zastanawiam się, czy istnieje elegancki i skuteczny sposób to zrobić, czy powinienem dodać nowy kontroler dla każdej kolumny (lub przycisku) Chcę, aby ta akcja się wydarzyła.

Odpowiedz

35

Oto dwa przykłady, z których korzystam. Pierwszy z numerem @plans to miejsce, w którym chcę po prostu zamówić dziesiętny od najniższego do najwyższego. Drugi przykład jest nieco bardziej skomplikowany, gdy chcę zamówić pliki użytkowników od najnowszych do najstarszych. Następnie użyłem drugiej zmiennej, aby pogrupować pliki według daty utworzenia. Oba przykłady zostały wykonane w kontrolerach.

@plans = Plan.order("price") 

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

Aby wyświetlić klikalne przyciski w widoku, sprawdź odcinek Railscast Ryana Batesa zawierający te informacje.

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

+0

dzięki użyłem Aproach railscast – marimaf

+0

Jeżeli kod ten będzie realizowany w widoku kontrolera lub pomocnika ? – sqrcompass

+1

Wykonanie '@ user.files.order (id:: desc)' jest najbardziej eleganckim sposobem, aby to zrobić, jeśli piszesz statycznie. Jeśli jego dynamika jest o wiele lepsza, po prostu wykonaj '@ user.files.order (" # {criteria} # {direction} ")' – Lomefin

-1

tutaj jest relacja danych, która pokazuje, w jaki sposób uzyskać dostęp do nazwy w kolejności przystępowania

@results = Result.has_pro.ascending(:name).page(params[:page]) 
Powiązane problemy