In precedenza, nelle guide 2.3.8 ho utilizzato i prototipi-aiutanti link_to_remote
e form_remote_for
(tra gli altri).rails3 rails.js e jquery che intercettano il successo e l'insuccesso delle richieste Ajax
Questi avevano la possibilità :update
come segue:
link_to_remote "Add to cart",
:url => { :action => "add", :id => product.id },
:update => { :success => "cart", :failure => "error" }
(un esempio dal documentation). Questo esempio, dopo il successo, aggiorna l'elemento html con la classe "carrello" e, in caso di errore, la classe "errore".
Ora credo che il modus operandi è cambiato, invece scriviamo:
link_to "Add to cart", :url => {:action => "add", :id => product.id},
:remote => true
e non v'è alcuna opzione per impostare più :update
. Invece di un normale html, ora rendiamo javascript, come questo (in jQuery):
$('.cart').replaceWith(<%= escape_javascript(render :partial => 'cart') %>)
ma come si fa a gestire una situazione di errore? Lo gestisco nel mio controller e utilizzo le viste separate?
Mi sembrerebbe utile in qualche modo riuscire a simulare il comportamento che avevamo prima. Qualche idea?
io sono l'unico che si pensa fatto un passo indietro con la rimozione di JavaScript semplice da Rails? – Amala
Come css divide gran parte del layout dal contenuto (HTML), è anche meglio dividere il comportamento dall'HTML (quindi usa js non invadente). Sebbene questo sia, in effetti, più difficile (all'inizio), rende anche più semplice la lettura del tuo HTML/JS (usa saggiamente i nomi delle classi e gli identificatori) e rende il tuo JS più facile da mantenere e riutilizzare nel longrun. – nathanvda
'ajax: caricamento' non ha funzionato per me, ho dovuto usare 'ajax: prima' - nel caso in cui qualcun altro incontri questo problema. (Rails 3.1.1) – tmaximini