2011-04-11 1 views
0

Retour dans Rails 2, il y avait une option: condition dans link_to_remote qui vous permettait de spécifier un javascript qui devait retourner true ou la requête distante ne serait pas envoyée. Cependant, dans les rails 3, il semble que ces options ont été supprimées. Ce que je veux faire est d'avoir un formulaire ajax, mais il doit subir une validation sur le navigateur avant qu'il ne soit soumis (c'est une validation très non-standard). Essentiellement, je dois être en mesure de définir une expression javascript conditionnelle pour empêcher le formulaire d'être soumis si la validation échoue - la même chose que l'option: condition des rails 2. Y a-t-il moyen de retrouver cette fonctionnalité dans les rails 3? J'utilise mootools avec la version mootools de rails.js. J'ai regardé à travers le fichier rails.js de mootools et n'ai rien vu qui puisse me permettre de spécifier un javascript conditionnel. Est-ce que je manque quelque chose?Rails 3 lien distant avec: condition et mootools

* note: Je viens de parcourir la source pour le fichier rails.js par défaut écrit en prototype. Dans ce fichier, il y a là, les lignes suivantes:

var event = element.fire("ajax:before"); 
if (event.stopped) return false; 

Cela ressemble à la version prototype, vous pouvez arrêter la demande d'être envoyé en écoutant les « ajax: avant » l'événement et l'arrêt de l'événement dans votre écouteur. Cependant, je ne peux pas trouver quelque chose comme ça dans le code de mootools rails.js, alors peut-être que c'est un bug dans le fichier mootools rails.js?

Répondre

0

link_to_remote a été supprimé de Rails 3. C'est un link_to :remote => true maintenant. Et si vous voulez faire une validation js, vous pouvez utiliser quelque chose comme ceci:

<%= link_to "test", '/test', :id => "test-link", :remote => true %> 

et ajoutez votre validation dans les application.js (dans mon exemple, il est Prototype Et ce n'est pas un problème de le faire avec Mootools. Je suppose):

document.observe("dom:loaded", function() { 
    $('test-link').observe('click', function(event){ 
    if your_validation_magic 
     event.stop(); 
    }); 
}); 

mise à jour: Mootools a cet événement aussi: https://github.com/kevinvaldek/mootools-ujs/blob/master/Source/rails.js#L131