2013-07-18 11 views
8

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

  1. creano un parziale di fuori della parte che voglio per aggiornare e dare un ID univoco, dicono #tracks
  2. creare un'azione speciale nel controller per tale chiamata Ajax, dicono remove_track che aggiorna tutti i valori, ecc e aggiungere format.js
  3. 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' %>");
  4. 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.

risposta

Problemi correlati