AJAX, Rails e caricamento dinamico dei moduli
-
04-07-2019 - |
Domanda
Ho un'app Rails che ha preso un po 'di trazione, ma ho un forte mal di testa da affrontare. È una sorta di applicazione di gestione patrimoniale: gli utenti caricano le loro foto, .pdf, video, ecc. E il sistema consente loro di gestire la modalità di presentazione di tale risorsa.
Ho iniziato con una vista delle rotaie abbastanza standard - proprio quello che viene generato dalle rotaie - per index.html.erb. Ho un parziale che rende una miniatura per ciascuna delle risorse e qualcosa del genere:
<div id="preview"> </div>
Quello che voglio è che la miniatura sia cliccabile (abbastanza facile) ma quando l'utente preme quel pulsante, il contenuto del div verrà riempito, beh, essenzialmente il edit.html.erb, ma suppongo deve essere fatto come parziale. L'ho già gestito con javascript diretto.
Ho accesso alla versione pre-pubblicazione del nuovo libro "Agile Development on Rails", che chiunque può ottenere attraverso l'editore, ma il capitolo su AJAX è molto minimale e presuppone più esperienza con queste cose di quante ne abbia io , essendo questa la mia prima incursione in javascript e rails.
AGGIORNAMENTO: in risposta a "qual è la domanda" 'risposta', anche se ho pensato che fosse abbastanza chiaro:
Cosa devo inserire nella miniatura dell'anteprima per fare in modo che un clic su di essa carichi il modulo di modifica nel div?
Soluzione
devi usare link_to_remote:
<%= link_to_remote image_tag('whatever.jpg'),
{:controller => 'something', :action => 'replace_thumbnail', :id => @thumbnail.id},
:update => 'preview' %>
e nel controller dovresti avere questa azione:
def replace_thumbnail
image = Image.find(params[:id])
render :partial => 'edit', :object => image, :layout => false
end
assicurati che il tuo parziale sia chiamato '_edit.html.erb'