2017-01-30 20 views
0

Я пытаюсь отображать напоминание в виде флеш-сообщения в моем приложении rails с помощью sidekiq. Я узнал, как установить флэш-сообщение у работника с this answer.Как отображать флэш-объект после sidekiq works finishes-rails

Как указано в последнем пункте этого ответа, как автоматически указывать уведомление, когда делается запись?

Также как удалить эту запись после закрытия флэш-сообщения?

Я новичок. Незлая помощь.

В соответствии с просьбой, я добавляю мой код попытку:

В моем контроллере:

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

В моем sidekiq работник:

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

То, что я хочу, чтобы обновить страницу пользователя когда клавиша redis установлена, а также удалите пару, когда нажата кнопка закрытия вспышки.

+0

_ «как показать уведомление автоматически ...» _ ** показать вашу попытку ** для этой задачи, чтобы мы могли помочь вам исправить. –

+0

Я добавил код, как вы предложили. –

ответ

2

Sidekiq предназначенный для асинхронный работа. После того, как вы создали задание, ваш контроллер будет выполнен и отобразит страницу для браузера. Ваша работа может быть обработана 1 мс сейчас или через 1 час, вы не знаете. Другими словами, вы не можете делать то, что хотите. Вы должны спроектировать поток вашей страницы для любой учетной записи для этого или не создавать фоновое задание для работы.

+0

Ну, я понял, что скоро и, следовательно, сделал запись в redis. Мой контроллер отобразит сообщение в redis, если запись присутствует. Теперь проблема заключается в том, как автоматически обновлять страницу при создании записи для redis. –