Ajax

Witam,

mam takie pytanie, potrzebuję zrobić formularz który będzie wykorzystywał ajax ale nie jest to typowy formularz z wykorzystaniem :remote =>“true”. Chodzi o to, że jest to koszyk w którym mam pola tekstowe do wpisywania ilości produktów i właśnie to chcę, żeby się zmieniało za pomocą ajaxa. Sam zakup idzie już normalnie z przeładowaniem strony bo dodawane jest zamówienie ale przed tym chcę mieć możliwość ustalania ilości produktów.
Pytanie jest jak to zrobić najlepiej. Dodam, że mam 2 modele, cart i lineitems przeechowujący produkty dla danego koszyka i to właśnie w nim chcę zmieniać wartości ajaxem. Ajax ma być uruchamiany po zmianie wartości pola tekstowego.
Znalazłem coś takiego


tylko nie wiem za bardzo jak to zmienić do moich potrzeb :).

Z góry dzięki za pomoc.

Podaj przykładowy kod, kod jest czytelniejszy niż proza. Raczej wątpię, żeby napisał ktoś tobie rozwiązanie od zera, spróbuj coś napisać sam i jeśli nie będzie działać to wtedy będzie można to poprawić.

Nie wiem czy o to Ci chodzi, ale jeśli chcesz wysłać zapytanie ajaxowe np. po opuszczeniu pola w formie możesz użyć jQuery i funkcji blur().

$("#id_pola").blur(function(){ $.ajax({ type: 'POST', url: '/sciezka_do_akcji', data: {'val1': 1, 'val2': 2}, //json dataType: 'script' complete: function(data){ // zaktualizuj dane na stronie } }); });

Podobna sprawa: http://railscasts.com/episodes/240-search-sort-paginate-with-ajax

polecam inne railscasty z ajax

kod okroiłem ze zbędnego htmla. To jest widok bo nie mam nic więcej na razie

[code] <%= form_for @cart do |f| %>

  <%= f.fields_for :line_items, f.object.line_items do |line_item| %>       
   
    <td><%= line_item.object.lic.description  %> </td>
    <td><%= line_item.object.lic.duration %> </td>
    <td><%= number_to_currency(line_item.object.lic.cost)  %> </td>
    <td><%= line_item.text_field :quantity, :class => 'input-mini',:onChange=>"javascript: cart_update(#{line_item.object.lic.id},this.value); "%></td>
    <td><%= number_to_currency(line_item.object.quantity * line_item.object.lic.cost) %> </td>
    </tr>

 <% end %>

<% end %>
<%= button_to “Kupuję”, new_order_path, :method => :get, :class => ‘btn btn-success’ %>[/code]
tam gdzie jest onchange wywołuję sobie testową funkcje ale właśnie tam ma być wywołanie ajaxowe które zrobi mi aktualizacje ilości produktu w koszyku.
Sam obiekt cart się nie zmienia jedynie chce przy line_item mieć możliwość ustawienia ilości i ewentualnie usunięcie produktu z koszyka

Mam nadzieje, że nie wyląduje w zakładzie patologii kodu :D.

[quote=toomus]Nie wiem czy o to Ci chodzi, ale jeśli chcesz wysłać zapytanie ajaxowe np. po opuszczeniu pola w formie możesz użyć jQuery i funkcji blur().

$("#id_pola").blur(function(){ $.ajax({ type: 'POST', url: '/sciezka_do_akcji', data: {'val1': 1, 'val2': 2}, //json dataType: 'script' complete: function(data){ // zaktualizuj dane na stronie } }); });
[/quote]
No to masz przecież podpowiedź od toomus’a, użyj JavaScritpt’u i po zabawie.
I jak masz sam widok co skąd możesz wiedzieć co się dzieje w Controllerze…

dzięki, za pomoc, teraz powinienem już dać radę.