Personalmente, penso che una volta avete risposte ajax che devono potenzialmente aggiornare più aree non adiacenti della pagina, è sicuramente il momento di introdurre un framework JS. Il javascript generato dal server (come quello che ti danno gli aiutanti) è conveniente per cose molto semplici, ma una volta che le cose diventano più complesse, starai meglio restituendo i dati JSON dai binari e facendo in modo che il front-end capisca cosa parti della pagina dovrebbero essere aggiornate.
Non c'è motivo per cui tu debba essere uno o l'altro. Puoi continuare a utilizzare gli helper JS di Rails per le cose semplici, ma nelle pagine in cui ha senso inserire qualcosa come KnockoutJS, Backbone o Angular. Ho introdotto KnockoutJS in questo modo per un'applicazione esistente e ha funzionato abbastanza bene. Ha aiutato a non dipendere da una versione specifica di jQuery e supporta anche i browser più vecchi.
Una cosa che devi decidere è se aggiungere un framework JS tramite un rubygem, o semplicemente scaricarlo e aggiungerlo alla tua pipeline di asset. Il primo modo potrebbe essere più semplice, ma ti legherà anche alla versione inclusa con la gemma, che potrebbe lasciarti indietro un paio di versioni ad un certo punto. Se avessi iniziato una nuova app, probabilmente non userei nessuno dei javascript helper delle rotaie, e forse nemmeno la pipeline degli asset, e uso invece altri strumenti come il grunt per farlo. È quasi una "separazione delle preoccupazioni" con più lavoro in avanti, contro il "compromesso delle batterie".
L'aggiornamento di più aree non adiacenti sembra un criterio chiave. Inoltre, mi chiedo se abbia senso utilizzare Rails per i modelli js pesanti che Rails sta servendo per aree grandi come un dashboard. Se la struttura di js è incorporata in un pezzo di torta, l'API di back-end potrebbe essere alquanto complessa? – Phil
È interessante notare che nessuno ha parlato di 'EmberJS' ... – Askar