我正在尝试向用户显示一条简单的消息,同时创建自定义PDF并通过Paperclip将其附加到模型中。然后在完成后显示预览。
我能找到的最简单的解决方案是Mike Perham在this question中的回应。 “使用数据库存储每张照片的状态,让Sidekiq更新状态。”
毫无疑问,你会注意到我还在学习Javascript,JQuery,Rails&如何写出好的SO问题。尽管如此,到目前为止我还是弗兰肯斯坦所做的。
如果我在这里朝着正确的方向努力,请告诉我?
# generate_insert.rb
class GenerateInsert
include Sidekiq::Worker
def perform(customization_id)
customization = Customization.find(customization_id)
customization.update_attribute(:processing, true)
# code to perform, generate PDF via Prawn and attach via Paperclip
customization.update_attribute(:processing, false)
customization.save!
end
end
# customizations/show.html.erb
<div id='message'>First Message</div>
# messages.js
var i = 1;
var sampleMessages = [ "First Message", "Second Message", "Third Message" ];
setInterval(function() {
var newText = sampleMessages[i++ % sampleMessages.length];
$("#message").fadeOut(500, function () {
$(this).text(newText).fadeIn(500);
});
}, 1 * 3000);
});
# show.js.erb
$("#message").replaceWith("<%= j render 'customization' %>");
# poller.js
CustomizationPoller =
poll: ->
setTimeout @request, 5000
request: ->,
$.get($('???').data('url'))
jQuery ->
if $('#???').length > 0 // customization processing?
CustomizationPoller.poll()
答案 0 :(得分:1)
使用您所拥有的工具,您似乎走在了正确的轨道上。在你的用户需要更强大的解决方案之前保持简单是恕我直言。
如果您希望有更多这样的交互(即用户做某事并等待更新),您可以考虑使用Web套接字甚至使用https://rethinkdb.com等工具。当然,这取决于你计划拥有多少次这样的互动。