Sto aggiornando una vecchia app per binari a 3.1. L'app è praticamente funzionante, ma ho alcune funzionalità ajax che devo aggiornare. (Se fa alcuna differenza sto usando jquery e coffeescript)Rails upgrade a 3.1 - modifica della gestione di ajax da "render: update" per rispondere a
Tutte le funzionalità Ajax esistenti sono state scritte usando render: updates. ad es.
Penso che il nuovo modo preferito per farlo sia utilizzare un respond_to? blocco per gestire il js, ma non sono sicuro del modo migliore di gestire questi diversi casi.
Per il primo caso (il page.remove
) penso che con la linea di asset pipe, dovrei avere un js esterno in/app/assets/javascripts/per gestire il lato javascript (ad esempio il page.remove) ma sono non sono sicuro di come passare i parametri al file js. Sto indovinando si può fare qualcosa di simile:
respond_to do |format|
format.js {:render :js => {:ftof => params[:ftof_id]}
end
ma io non sono sicuro di come si poteva prendere questo in su da dentro il file js. È questo il modo giusto per passare le informazioni al js? O c'è un altro metodo che dovrei usare?
Per il secondo caso (il page.replace_html
) penso che questo sia stato deprecato/rimosso da 3.1 (secondo apidock). Sospetto ancora che questo dovrebbe usare il file js nella directory app/assets/javascript, ma non sono sicuro di come dovrei fare per rendere il partial e passare queste informazioni nel js.
Grazie per tutti i puntatori in questo settore) =
cool. c'è comunque un modo per farlo con coffeescript, o sei limitato al solo straight in update.js.erb? –
Se vuoi davvero usare CoffeeScript, potresti farlo, ma il supporto nelle viste dinamiche è discutibile da quello che posso dire. (Personalmente preferisco direttamente JS.) CoffeeScript per semplici jQuery one-liner è un po 'eccessivo. '$ ('# id'). append ('content');' a '$ ('# id'). aggiungi 'content''. Non vale la pena di salvare un insieme di parentesi. JQuery è compatto e abbastanza semplice. Tanto vale che tienilo d'occhio. – Substantial
Grazie per la risposta molto dettagliata! –