newman
September 17, 2007, 1:38pm
1
Witam!
Mam mały problem z observe_field. Próbowałem już różnych sposobów. Ostatecznie zatrzymałem się na:
<%= select_tag :typ, "<option value='-1'>Wybierz...</option>"+options_from_collection_for_select(@list, :id, :name, @selected = session[:id]) %>
<%= observe_field( "typ", :url => { :controller => "account", :action => "update", :id => "#{id}" } ) %>
Niestety observe_field nie działa
Będę wdzięczny za podpowiedzi…
kkempin
September 17, 2007, 2:17pm
2
jak rozumiem chcesz wykorzystac observe_field to automatycznego update w bazie po zmianie opcji w select
lepszym rozwiazaniem tego problemu jest zdarzenie onchange i funkcja remote_function, np.:
<select id="options" onchange="<%= remote_function(:update => "options",
:url => { :action => :update_options }) %>">
<option value="0">Hello</option>
<option value="1">World</option>
</select>
newman
September 17, 2007, 2:42pm
3
Używam observe_filed żeby pobrać dane do innego select_tag, wg ID z tego pierwszego. Uff, trochę namieszałem, ale chyba wiadomo o co chodzi.
W zasadzie mogę użyć onchange, chodzi o to żeby ID z select_tag “typ” zostało przekazane do action “update”.
Zmieniłem na onchange:
<%= select_tag "typ", "<option value='-1'>Wybierz...</option>"+options_from_collection_for_select(@list, :id, :name, @selected = session[:current_vendor]),
:onchange => remote_function(:update => "",
:url => { :controller => "account", :action => "update" })%>
…ale coś nie chodzi :-/
newman
September 17, 2007, 3:17pm
4
a jak poprawnie zdefiniować ten observe_field w moim przykładzie ?
kkempin
September 17, 2007, 4:13pm
5
[quote=newman]Zmieniłem na onchange:
<%= select_tag "typ", "<option value='-1'>Wybierz...</option>"+options_from_collection_for_select(@list, :id, :name, @selected = session[:current_vendor]),
:onchange => remote_function(:update => "",
:url => { :controller => "account", :action => "update" })%>
…ale coś nie chodzi :-/[/quote]
nie dziala, gdyz nie przekazujesz wybranej wartosci, sprobuj tak:
<%= select_tag "typ", "<option value='-1'>Wybierz...</option>"+options_from_collection_for_select(@list, :id, :name, @selected = session[:current_vendor]),
:onchange => remote_function(:update => "", :with => "'typ='+ escape($('typ').value)" ,
:url => { :controller => "search", :action => "update" })%>