J'ai un message flash qui est généré par une réponse ajax. Dans mon contrôleur j'ai:Rails, supprimer le message flash généré via ajax
def destroy
flash[:danger] = "Successfuly destroyed"
format.js
end
qui appelle un fichier destroy.js.erb
$('#flash_messages').html("<%= escape_javascript (render partial: 'layouts/flash_messages') %>");
qui rend une partie qui montre les messages flash. Ce partiel ressemble à ceci:
#flash_messages
-flash.each do |key, value|
= content_tag(:div, value, class: "flash alert alert-#{key}")
Je voudrais utiliser jquery pour supprimer le message flash après 2 secondes. Ce que j'ai essayé était:
$(".alert").fadeTo(2000, 500).slideUp(500, function(){
$(".alert").alert('close');
});
qui, cependant, ne trouve pas la classe .alert car elle est générée après la charge de page. Qu'est-ce qu'une solution de contournement de ce problème:? Je vous remercie!
Vous pouvez écrire le code Jquery dans le fichier 'destroy.js.erb'. Et puis ça va marcher. Jquery code que vous devez ajouter après $ ('# flash_messages'). Html ("' line of course.) Avez-vous essayé ceci? –
Cela a fait l'affaire, ajoutez-le comme une réponse pour que je puisse le marquer comme Accepté. ! –
Il existe d'autres moyens d'exécuter votre code: comme exécuter le code à la fin de l'Ajax, à partir du callback '' succès ''. comme ça va fonctionner. –