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_listPř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
…
endPokud 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_produktyclass 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:migrateDo 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'
%>