Když editujeme tabulku, v jejímž sloupci jsou indexová čísla do slovníku (číselníku), použijeme místo textového pole roletku ktero budeme plnit z navázané databáze. Nejjednodušší postup je vytvořit si pole a a to předat funkci select.
<%=
@moznosti = Format.find(:all, order => 'name').map{|e| [e.name, e.id]}
select :format, @params[:format], @moznosti
%>V prvním řádku si vytvoříme pole s jednotlivými volbami. To získáme tak, že si z tabulky formaty vybereme všechny záznamy a poskládáme pole možností tak že každý prvek je dvouprvkévé pole obsahující v prvním části text jenž se zobrazí e.name a v druhé části e.id. Toto pole voleb pak předáme funkci select.
Protože je toto poměrně časté, existuje funkce collection_select
collection_select
<%=
@volby = Format.find :all, :order => 'nazev'
collection_select :format, @params[:format], @volby, :id, :name
%>FIXME:
Pokud položky seznamu k zobrazení choices rozumí metodám first a last, použije funkce select první hodnotu first pro zobrazení a poslední last jako klíč.
<%=
@formaty = Format.find(:all, :order => 'nazev').map {|f| [f.nazev, f.id}
select :format, @params[:format], @formaty
%><%= select 'project', 'funding_source_id', FundingSource.find_all.collect {|f| [ f.name, f.id ] } %><% form_for :list, @list, :url => {:action => 'create'} do |f|%>
…
<%= f.select :stredisko_id, Stredisko.find(:all, :order => 'symbol').collect{|s| ["%03d | %s" % [s.cislo, s.symbol], s.id]} %>
…
<% end %>