2010-10-31 2 views
11

Sono interessato ad imparare come AJAX una finestra di dialogo modale. Tipicamente, se volevo aggiungere una finestra di dialogo modale al mio sito web, ho aggiunto il codice della finestra di dialogo dell'interfaccia utente jQuery nel mio file JS principale e l'ho associato a un ID.Rails - AJAX a Modal Dialog?

Credo che con Rails posso creare un collegamento, che recupera tutto il codice di dialogo dal server e quindi si apre la finestra di dialogo.

È vero?

Se è così, mi potete aiutare a capire, fornendo un semplice esempio di dove tutto vive nel rotaie MVC mondo?

Grazie

+0

Il must è solo utilizzare JqueryUI.dialog. Non hai bisogno di alcuni binari specifici – shingara

+0

Cosa intendi con "recupera tutto il codice di dialogo dal server"? Vuoi dire recuperare il codice jQuery che può creare il dialogo? Perché non dovresti avere questo codice in un file js che è incluso nel tuo layout o vista? Se stai cercando di recuperare qualcosa con cui popolare la finestra di dialogo, questa è una storia diversa. – Samo

+0

Hmm, c'è di più nella domanda a cui non ho risposto di seguito? Se accettabile, gradirei accettare la risposta :) –

risposta

35

Accidenti, ti ha chiesto questo 4 mesi fa in modo probabilmente avete capito questo, ormai. Ho anche avuto difficoltà a trovare una buona recensione su come farlo. Ecco quello che ho capito:

In qualunque pagina che si desidera tirare su questa finestra di dialogo, si desidera avere un div in questo modo (si noti che non vuoi visualizzare questo ancora):

<div id="person-form" title="Person" style="display:none"></div> 

a questo punto di vista, si desidera anche una chiamata Ajax per tirare su questa finestra di dialogo:

<%= link_to 'Edit Profile', edit_person_path(person), :remote => true %> 

Ovviamente, si desidera che questo edit_person_path per il routing a una certa azione. Tale azione dovrebbe rendere un js.erb che ha qualcosa come il seguente (in jQuery):

$("#person-form").dialog({ 
    autoOpen: true, 
    height: 600, 
    width: 600, 
    modal: true, 
    title: 'Edit Person', 
    buttons: { 
    "Edit": function() { $("#edit_person_<%= @person.id %>").submit() }, 
    }, 
    open: function() { 
    $("#person-form").html("<%= escape_javascript(render('form')) %>") 
    }, 
}); 

Questo renderà un _form.html.erb parziale nella finestra di dialogo.

Nota: si sta andando ad avere bisogno di configurazione stile jQueryUI anche per la finestra di dialogo per rendere bella e abbastanza.

+0

Ciao, ho appena trovato questo esempio. Grazie mille perché almeno fa apparire la finestra modale sullo schermo. Comunque ... sembra fin dall'inizio. Quindi non appena vado nella mia vista indice, si apre, non quando clicco sul link remoto. Sono sicuro che non avrebbe dovuto funzionare in quel modo. forse hai suggerimenti? – Lievcin

+0

Jinyoung - Sto cercando di implementare un modulo in una finestra di dialogo usando la tua guida. Sto facendo qualcosa ovviamente sbagliato? [Link] (http://stackoverflow.com/questions/8953135/trying-to-make-a-form-in-a-jquery-dialog-modal-form-work-what-am-i-missing) Grazie – thatdankent

+1

Salve thatdankent, penso che avrei potuto trovare il bug e postato nelle tue domande. In bocca al lupo. –