2010-10-31 9 views
11

Je suis intéressé à apprendre à AJAX un dialogue modal. Généralement, si je voulais ajouter une boîte de dialogue modale à mon site Web, j'ai ajouté le code de dialogue de l'interface utilisateur jquery dans mon fichier JS principal et l'ai lié à un ID. Je crois avec Rails que je peux créer un lien, qui récupère tout le code de dialogue du serveur, puis ouvre la boîte de dialogue.Rails - AJAX un dialogue modal?

Est-ce vrai?

Si oui, pouvez-vous m'aider à comprendre en fournissant un exemple simple d'où tout vit dans le monde MVC rails?

Merci

+0

Le must est juste utiliser JqueryUI.dialog. Vous n'avez pas besoin de rails spécifiques – shingara

+0

Que voulez-vous dire par "récupère tout le code de dialogue du serveur"? Voulez-vous dire chercher le code jQuery qui peut créer le dialogue? Pourquoi ne pas simplement avoir ce code dans un fichier js qui est inclus dans votre mise en page ou vue? Si vous essayez de récupérer quelque chose avec lequel remplir la boîte de dialogue, c'est une histoire différente. – Samo

+0

Hmm, y a-t-il plus à la question que je n'ai pas répondu ci-dessous? Si acceptable, j'apprécierais une acceptation de la réponse :) –

Répondre

35

Mon Dieu, vous avez demandé cela il y a 4 mois si vous avez probablement compris cela maintenant. J'ai également eu du mal à trouver un bon article sur la façon de le faire. Voici ce que j'ai compris:

Quelle que soit la page que vous voulez tirer cette boîte de dialogue, vous voulez avoir un div comme si (notez que vous ne voulez pas afficher ce encore):

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

dans cette optique, vous voulez aussi un appel Ajax pour tirer cette boîte de dialogue:

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

de toute évidence, vous voulez que cette edit_person_path voie à une certaine action. Cette action devrait rendre une js.erb qui a quelque chose comme ce qui suit (en 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')) %>") 
    }, 
}); 

Cela rendra une _form.html.erb partielle dans la boîte de dialogue.

Remarque: vous devrez également configurer le style jQueryUI pour que la boîte de dialogue s'affiche correctement.

+0

Salut, juste venu à travers cet exemple. Merci beaucoup car au moins cela fait apparaître la fenêtre modale sur l'écran. Cependant ... il apparaît depuis le début. Donc, dès que je vais dans mon index, il apparaît, pas quand je clique sur le lien distant. Je suis sûr que ce n'était pas censé fonctionner comme ça. peut-être avez-vous des suggestions? – Lievcin

+0

Jinyoung - J'essaie d'implémenter un formulaire dans une boîte de dialogue en utilisant vos conseils. Est-ce que je fais quelque chose qui ne va pas? [link] (http://stackoverflow.com/questions/8953135/trying-to-make-a-form-in-a-jquery-dialog-modal-form-work-what-am-i-missing) Merci – thatdankent

+1

Salut thatdankent, je pense que je pourrais avoir trouvé le bug et l'ai posté dans vos questions. Bonne chance. –