Oui je sais, je lague à faire des tutoriaux pour débutants de choses qui datent de mathusalem.
Cependant il ne me semble pas en avoir vu de sympa qui utilisent Rails et JQuery.
Commençons d’abord par vérifier l’existence (ou non) du pseudonyme.
Dans notre modèle utilisateur, nous plaçons la fonction suivante :
def nick_available
render :text => 'OK' and return unless User.find_by_login params[:id]
render :text => 'NOT'
end
Par la suite, si vous appelez votre méthode nick_available, vous verrez s’afficher le texte ‘OK’ si le pseudonyme est disponible. Et NOT sinon.
Passons maintenant à notre formulaire d’inscription. Nous avons un champ texte pour le pseudonyme et un div vide qui nous indiquera si le pseudonyme est disponible ou non.
<%= f.text_field :login %>
<span id="availability"></span>
Enfin, nous devons faire un appel ajax à cette méthode lorsque l’utilisateur a fini de taper son identifiant (et pas à chaque fois que celui-ci change. Sauf si nous cherchons à saturer la connexion de l’utilisateur et notre serveur).
<script type="text/javascript">
$(document).ready(function() {
$('#user_login').blur(function () {
username = $('#user_login').val();
if (username == '') {
$('#availability').html('');
return false;
}
$.get('/users/nick_available/'+username, function(data) {
if (data == 'OK') {
$('#availability').html('Disponible');
$('#availability').css('color', 'green');
} else {
$('#availability').html('Non disponible');
$('#availability').css('color', 'red');
}
});
})
});
Ainsi, lorsque le pseudonyme est utilisé, le div ayant pour id « availability » prendra la couleur rouge et la valeur « Non disponible ».
Dans le cas contraire, il affichera en vert « Disponible ».





Petite question plus pour la forme (niveau habitudes de dev toussa), à propos de JQuery, tu préfères :
$.get(’/users/nick_available/’+username, callback)
à
$.get(’/users/nick_available/’,{param:username},callback)
?
Eh bien oui parce que le paramètre est à passer ici non pas en GET (après un ?), mais directement dans l’url.
Ah ouais effectivement, je n’avais pas fait attention au fait que t’ai une méthode nick_available toussa, j’vais me mettre à ruby plus sérieusement