2017-01-30 3 views
0

J'essaye d'afficher la notification de rappel comme un message flash dans mon application rails en utilisant sidekiq. J'ai appris comment régler le message flash dans le travailleur de this answer.Comment faire pour afficher l'objet flash après sidekiq travailleurs finitions-rails

Comme mentionné dans le dernier point de cette réponse, comment afficher la notification automatiquement, lorsqu'une entrée est effectuée?

Comment supprimer cette entrée une fois le message flash fermé?

Je suis un débutant. Aide aimablement.

Comme l'a demandé, j'ajouter mon code tentative:

Dans mon contrôleur:

def show 
    @user = User.find(params[:id]) 
    msg = $redis.get("messages:#{@user.id}") 
    flash[:info] = msg if !msg.nil? 
end 

Dans mon ouvrier sidekiq:

def perform user, type 
    @user = user`enter code here` 
    message = "Message content" 
    $redis.set("messages:#{user.id}", message) 
end 

Ce que je veux est de rafraîchir la page de l'utilisateur lorsque la touche redis est définie et supprime également la paire lorsque le bouton de fermeture du flash est enfoncé.

+0

_ "comment afficher la notification automatiquement ..." _ ** montrez votre code ** tentez cette tâche, que nous pouvons vous aider à résoudre. –

+0

J'ai ajouté du code comme vous l'avez suggéré. –

Répondre

2

Sidekiq est conçu pour le traitement de travaux asynchrone. Une fois que vous avez créé un travail, votre contrôleur est terminé et restitue la page pour le navigateur. Votre travail pourrait être traité 1ms à partir de maintenant ou 1 heure à partir de maintenant, vous ne savez pas. En d'autres termes, vous ne pouvez pas faire ce que vous voulez. Vous devez concevoir votre flux de pages pour en tenir compte ou ne pas créer un travail d'arrière-plan pour le travail.

+0

Eh bien, je me suis rendu compte que bientôt et donc fait une entrée à redis. Mon contrôleur affichera le message en rouge si l'entrée est présente. Le problème, maintenant, est comment actualiser automatiquement la page quand une entrée à redis est faite. –