2010-06-02 3 views
2

J'utilise le plugin formulaire Jquery pour soumettre le formulaire via ajax. J'ai mis en place des validations côté serveur dans mes modèles. Maintenant, quand la validation échoue, je veux afficher le même message flash [: error] à l'utilisateur en utilisant ajax. Si la validation réussit, je peux afficher le flash [: avis] tel qu'il est disponible après la fin de la requête. Comment puis-je afficher flash [: erreur]?Jquery AJAX: Comment afficher le message d'erreur Flash lorsque la validation côté serveur échoue?

Répondre

4

Renvoie un statut d'erreur HTML à partir de votre application Rails. Dans les options .ajaxForm(), définissez le rappel 'erreur' pour gérer les statuts d'erreur.

Voici ce que votre contrôleur Rails pourrait ressembler à:

def update 
    @widget = Widget.find(params[:id]) 

    if @widget.update_attributes(params[:widget]) 
    respond_to do |format| 
     format.js { head :ok } 
    end 
    else 
    respond_to do |format| 
     format.js { render :json => @widget.errors.full_messages.join(' '), :status => 400 } 
    end 
    end 
end 

Et voici ce que votre .ajaxForm() appel pourrait ressembler (même pour .ajaxSubmit()):

$('form.ajax').ajaxForm({ 
    success: function(data) { 
    /* response for success */ 
    }, 
    error: function(data) { 
    /* Display validation message response from Rails app */ 
    $('form.ajax').prepend('<p class="errors">' + data.responseText + '</p>'); 
    } 
}); 

Vous pouvez en savoir plus sur le error rappel dans le jQuery API.
Paydrotalks a également un bon tutoriel sur la refactorisation de ces types de réponses.

Questions connexes