2017-01-30 3 views
0

sidekiqを使用して私のレールアプリにフラッシュメッセージとしてリマインダ通知を表示しようとしています。私は作業員のフラッシュメッセージをthis answerに設定する方法を学びました。sidekiqワーカーフィニッシュレールの後にフラッシュオブジェクトを表示する方法

その回答の最後のポイントで述べたように、エントリが作成されたときに通知を自動的に表示する方法はありますか?

フラッシュメッセージが閉じられたら、そのエントリを削除する方法もありますか?

私は初心者です。親切に助けてください。私のコントローラで

:要求されたよう

、私は私のコードの試みを追加している私のsidekiqワーカーで

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

:私が欲しいもの

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

は、ユーザーのページを更新することですフラッシュの閉じるボタンが押されたときにペアを削除することができる。

+0

_「通知を自動的に表示する方法」_ **あなたのコード**を試してみてください。 –

+0

提案したコードを追加しました。 –

答えて

2

Sidekiqは、非同期ジョブ処理用に設計されています。ジョブを作成すると、コントローラが終了し、ブラウザ用のページがレンダリングされます。あなたの仕事は今から1ms後、または1時間後に処理されるかもしれませんが、あなたはわかりません。つまり、あなたが望むことをすることはできません。このためにページフローをどちらかのアカウントに設計するか、作業のバックグラウンドジョブを作成しないでください。

+0

まあ、それはすぐにそれを実現し、したがってredisへのエントリを作った。エントリが存在する場合、コントローラはメッセージを赤字で表示します。問題は、ここでredisへのエントリが行われたときにページを自動的にリフレッシュする方法です。 –

関連する問題