Witam
Chciałbym móc sortować wyniki na stronie index.rhtml utworzonej przez Scaffold-resource.
Czy ktos mógł by mi podpowiedzieć jak to zrobić??
Z góry dzięki
Witam
Chciałbym móc sortować wyniki na stronie index.rhtml utworzonej przez Scaffold-resource.
Czy ktos mógł by mi podpowiedzieć jak to zrobić??
Z góry dzięki
Jesli to scaffold wygenerowany, to mozesz wyedytowac twoj_controller.rb i w akcji list do metody find() dodac :order => ‘kolumna typ_sortowania’
Mozna np. tak:
[code]# application.rb
def order_from_sort_param(default)
params[:sort] ||= default
params[:sort].gsub(/_desc$/, " DESC") # mozna tez po prostu zastapic underscore spacja
end
def sort_class(param)
case params[:sort]
when param then “sortup”
when param + “_desc” then “sortdown”
else “nosort”
end
end
def sort_direction(param)
params[:sort] == param ? “#{param}_desc” : param
end
Post.find …, :order => order_from_sort_param(‘id’) # defaultowe sortowanie ustawione na id[/code]
Ajaxowo jest analogicznie tylko link_to_remote, zawartosc tabeli w partialu np ‘_list.rhtml’ i w index.rjs page.replace :list, :partial => “list”, oczywiscie albo tag table albo div zawierajacy table powinien miec w tym przyp id ‘list’.
Mozna tez przesylac rezultat jako json, ale to bardziej ma sens np. w przyp. nanoszenia danych na istniejacy grid (terminarz spotkan, figury na szachownicy itp.)
Jezeli dodatkowo chcesz paginacji to pamietaj o uwzglednieniu tego parametru (sort) w query string linku paginatora (inaczej zgubisz sortowanie na nastepnych stronach tabeli). Mozesz oczywiscie przechowac order w sesji. Jak kto woli.