我想在执行作业后向用户显示flash消息。
问题是,在作业排队之前,我必须在我的页面上刷新。如果作业需要一段时间,那么我的信息就会正确显示。
但如果作业执行得太快,则会在页面刷新之前显示该消息,并在页面刷新后丢失。
那么,我可以在执行after_perform方法之前等待几秒钟,有点像这样:
class CsvImportJob < ApplicationJob
queue_as :default
after_perform :flash, wait: 5.seconds
我的控制器:
def upload_merchant_list
process_upload(:merchant_list)
flash[:notice] = "Done processing merchants list. Starting job in the background..." if status == :ok
respond_to do |format|
format.html { redirect_to financing_campaign_path(@campaign) }
format.json { render json: { location: financing_campaign_path(@campaign) }, status: status }
end
end
和我的工作:
class CsvImportJob < ApplicationJob
queue_as :default
after_perform :flash
def perform(params)
[...]
end
private
def flash
@notification_service ||= NotificationService.instance
@notification_service.flash(job_user, 'Finished processing list in the background.', NotificationService::INFO)
end
end
谢谢!