<% form_for :place do |form| %>
<%=form.select(nil ,@places)%>
<%= submit_tag “Add”, :class => “submit” %>
<% end %>
Problem polega na tym ze mam 3 listy. Pierwsza wyswietla to co mam w zmiennej @places jak widac powyzej.
Gdy klikne Add to w kontrolerze wywoluje mi sie kod ktory zmienia mi zawartosc kolejnej listy.
Pytanie: Jak to wywolac bez klikania, czyli poprostu poprzez wybranie jednej z pozycji listy @places.
Nie wiem czy jest sens używać tutaj observe_field.
W tym przypadku ja bym ustawił po prostu zdarzenie onchange. Czyli w prototype jakoś tak:
Event.observe(window, 'load', function() {
Event.observe('places', 'change', function () {
$$('form')[0].submit();
});
});
powyższy kod działa w założeniu, że select ma id=“places”. Po zmianie wartości forma zostanie wysłana (jak masz więcej form musisz dodać im jakieś id/klasy i odpowiednio zmodyfikować $$). Można pewnie to zrobić jakimiś helperami w railsach - jeżeli tak wolisz przejrzyj dokumentację.
Oczywiście ładniej byłoby to zrobić w ajaxie - ale to już trochę więcej.
NO ze Ajax sobie z tym poradzi to wiem tyle ze implementacje tego zostawiam sobie na pozniej narazie chce zeby z bazami wszystko zadzialalo jak trzeba.
Myslalem ze moze istnieje cos w stylu submit_tag tyle ze dzialajace w ten sposob jak pisalem wczesniej. Jesli nie, to trudno zostawie jak jest i w drugiej czesci sprobuje z Ajaxem.
Jesli ktos ma jeszcze jakies pomysly to zapraszam do postowania
Pozdrawiam
czy to powinno dzialac samo z siebie czy trzeba cos, gdzies dopisac, dolaczyc?
Jak zmienie wartosc listy to nic sie nie dzieje, jesli klikne add to ladnie zmieniaja mi sie wartosci w kolejnej liscie.
Chyba jednak zostaje poszperac o observe_field. Mimo wszystko wielkie dzieki za pomoc Drogus
Powinno działać o ile masz nowego prototype’a. Jeżeli starego jakiegoś, to takie coś powinno:
<% form_for(:place, :html=> {:id => 'form'}) do |form| %>
<%= form.select(nil ,@places, {}, :onchange => "$('form').submit()" ) %>
<%= submit_tag "Add", :class => "submit" %>
<% end %>
Najlepiej zainstaluj sobie firebuga i zobacz jaki błąd Ci wyskakuje w razie czego. To powyżej sprawdziłem na starym prototype i działa.
No to co podales dziala ale tylko w browserze aptany. Jesli wstukam to w opere czy firefoxa to niestety to onchange nie zaskakuje. W tej chwili wzialem sie za dalsze rozwijanie mojego serwisu. Do tego wroce jak cala reszta bedzie w miara dzialac. A tak w sumie to dziwne ze dziala w aptanie a w przegladarce nie…
wilekie dzieki za pomoc