Attributy:
Odkazy:
Tento recept používá plugin 47.29.3 – „Acts As List“.
Postup 47.1. Ukázkový postup
Nejdříve potřebujeme nainstlovat plugin 47.29.3 – „Acts As List“.
$
script/plugin install acts_as_list
Přidáme do tabulky, která má mít definováno pořadí, sloupeček který tuto informaci bude udržovat. Pokud ještě tabulku nemáme, do migrace přidáme definici sloupce.
create_table :produkty do |t| … t.integer :position … end
Pokud tabulku již máme, napíšeme si migraci která tento sloupec přidá. V této ukázce se tabulka jmenuje produkty
a pro sloupec s pořadím jsem zvolil název position
.
$
script/generate migration add_position_to_produkty
class AddPositionToProdukty < ActiveRecord::Migration def self.up add_column :produkty, position, :integer counter = 1 Produkt.all.each do |produkt| produkt.position = counter produkt.save counter += 1 end end def self.down remove_column :produkty, :position end end
$
rake db:migrate
Do modelu naší tabulky přidáme deklaraci acts_as_list
class Produkty < ActiveRecord::Base acts_as_list named_scope :ordered, :order => :position end
A teď zobrazení našich produktů.
<tbody id="produkty" style="cursor:move"> <% @produkty.each do |produkt| %> <% id="item_<%= produkt.id %>"%> … </tbody> </table> <%= sortable_element 'produkty', :url => { :action => 'sort', :id => @produkty }, :complete => visual_effect(:highligth, 'produkty'), :tag => 'tr' %>