In passato, ogni volta che volevo aggiornare una parte della mia vista attraverso l'Ajax, ho fatto quanto segue:Rails eliminare remoto e visione aggiornamento tramite Ajax
- creano un parziale di fuori della parte che voglio per aggiornare e dare un ID univoco, dicono
#tracks
- creare un'azione speciale nel controller per tale chiamata Ajax, dicono
remove_track
che aggiorna tutti i valori, ecc e aggiungereformat.js
- creare un nuovo file JS con la stessa nome come l'azione in modo che Rails lo chiama automaticamente
remove_track.js.erb
che contiene alcuni Cose del genere:$('#tracks').html("<%=j render 'cds/show_tracks' %>");
- impostare
remote: true
nel collegamento che chiama questa azione.
Tutto questo va bene, ma ora sto cercando di eliminare e aggiornare una comune index
vista utilizzando il metodo normale destroy
per la flessibilità, il che significa che posso chiamare questo metodo sia attraverso l'Ajax o normalmente. Ho capito che è una cosa così comune da fare che ci deve essere un modo migliore di tutto quanto sopra.
posso ottenere il metodo destroy di chiamare il mio file di destroy.js.erb
semplicemente mettendo questo nel controller:
format.js { layout: false }
e di impostare remote: true
sul link corso.
quello che non posso fare è ottenere la vista per aggiornare. La tabella che voglio aggiornare è racchiusa in un div con un ID univoco, ma poiché non è parziale, si rifiuta di aggiornare il contenuto. Forse mi manca qualcosa.
Sono condannato a dover creare un partial e aggiornarlo con il metodo sopra o esiste un modo più magico di farlo (oltre all'utilizzo di Turbolinks)?
Grazie.
PS Inoltre, ho notato questo ha lo svantaggio che non posso passare il resto dei params al metodo destroy poiché passa solo l'ID oggetto per distruggere utilizzando i percorsi CRUD regolare. Se provo ad usare platform(action: destroy)
o platform(method: delete)
ottengo un errore:
No route matches {:action=>"destroy", :controller=>"platforms"}
Il che significa che devo creare una nuova rotta se voglio passare i parametri ...
Ancora un altro svantaggio di tutto questo è che sto ripetendo tutta la logica per le ricerche e l'ordinamento che ho di nuovo nel metodo indice nel metodo destroy. Sono certo che questo è sicuramente non il modo per farlo.
Grazie mille. Ha funzionato perfettamente per me. Probabilmente dovresti contrassegnarlo come risposta accettata o scrivere il codice nella risposta qui. – marcamillion