Popup Prototype Window Class et formulaire

Bonjour,
J’utilise le Prototype Window Class (
http://prototype-window.xilinus.com/index.html
), qui marche très bien d’ailleurs, pour afficher une “fausse” popup
dans mes pages.
Mon but est le suivant : j’ai un formulaire personne avec à
l’intérieur un select qui permet de choisir une civilité ( en
référence à la table civilites ) et je veux que l’utilisateur puisse
créer une nouvelle civilité en restant sur cette page et, si possible,
qu’elle soit automatiquement sélectionné dans le select mis à jour.
Grace à Window Class, j’ai ajouté un lien nouvelle civilité qui
permet d’afficher la page http://XXX/civilites/new (il utilise un
iframe je crois) ce qui permet d’ajouter une civilité dans la table
sans problème mais je voudrai maintenant que lorsque l’utilisateur
clique sur enregistrer la civilité la popup Window Class se ferme
automatiquement (au lieu de renvoyer l’utilisateur vers la page
classique qui suit le formulaire nouvelle civilité) et que mon select
sois mis à jour pour sélectionner la nouvelle civilité créer.
Je ne sais pas du tout comment faire ca, a priori je pensai ajouter un
parametre popup=true quand on appelle le form de nouvelle civilité
depuis une popup puis modifier l’action create dans mon controlleur
civilité pour exécuter un script qui ferait ca après avoir enregistré
la civilité mais… je ne sais pas comment modifier l’action create
pour obtenir ca ?
Sinon je peux aussi remplacer le form_for par un remote_form_for
quand le paramètre popup=true et gérer ca en ajax, mais je ne sais pas
non plus comment faire et je trouve ca plus simple si je peux garder
mes formulaires identiques qu’il soit dans une popup ou pas.
Une dernière solution serait de ne pas charger une URL dans la popup
mais plutot le contenu d’un div mais cela complique un peu, je dois
gérer le formulaire en ajax, et ne résous pas mon problème de comment
mettre le select à jour.
J’aimerai vos conseils pour savoir comment réaliser ca et également
vos avis sur quelle voie est la meilleure ?
Merci à tous

Adrien

Oups, j’ai oublié les paramètres dans le call AJAX, mais bon, tu ne
t’attendais pas non plus à ce que je fasse tout ton boulot moi-même
n’est-ce
pas ?..

Michel B.

Mon petit conseil : bubbling.

Mettons que tu sois dans cette configuration :

...

Et que, comme moi, tu préfère attribuer la méthode pour transformer ça
en
formulaire AJAX quel que soit le formulaire, quelle que soit l’action,
au
chargement initial de la page, et sans t’inquiéter de répéter
l’attribution
de l’action AJAX Ã chaque fois que tu charge le petit bout de formulaire
en
AJAX justement.

Oh, et aussi, je n’aime pas mettre un paramètre “ajax=true” dans mes
urls
pour avoir le formulaire, ça fait sâle.

Ca semble impossible ?

document.body.observe(‘submit’, function(event) {
if (event.findElement('.class_that_means_its_a_popup) {
event.stop();
var the_actual_form = event.findElement(‘form’);
var the_action = form.readAttribute(‘action’);
var the_parameters = form.serialize();

new Ajax.Request(the_action, {
method: ‘post’,
onSuccess: function(transport) {
// whatever you like here
}
});

return false;
}
});

Magic.

Michel B.

2009/7/13 Adrien C. [email protected]