0

ブラウザによって呼び出される「長い」タスクがあります。私がやりたいのは、同じページまたはライトボックスに(ページを更新せずに)「舞台裏」タスクの進行状況を表示する動的プログレスバーを作成することです。

私の考えは、次のようなJQueryバーを使用することです:http://docs.jquery.com/UI/API/1.8/Progressbar

私の質問は:

タスク(lib /内)からJQuery(または一般的なビュー)を呼び出してバーを更新するにはどうすればよいですか?

参考までに、私もActiveAdminを使用していますが、これはプリコンパイルされたビューを使用しているため、単に問題ではありません。

4

2 に答える 2

3

進行状況バーの情報を提供するために、コントローラーで新しいRESTアクションを作成します(または理想的には既存のアクションを再利用します)。

また、JQueryを使用してAjaxでコントローラーを一定間隔で呼び出そうとします。

プログレスバーの実装に直面するこの方法は、libタスクからビューを呼び出すよりも優れたアイデアだと思います。

このようなもの:

$(function() {
  setInterval(updateProgressBar, 1000);
});
function updateProgressBar() {
  //Invoke controller with ajax, and update progressBar
}

クライアントでポーリングを試してみたい場合は、HTML5で興味深いサーバーイベントを見つけることができます。

于 2012-12-03T08:24:51.363 に答える
0

少し前の投稿ですが、誰かに役立つ場合に備えて、それを行う宝石があります。これはもう維持されていないようですが、要求された動作を実装する方法の良い例です。

https://github.com/d4be4st/progress_job

于 2018-08-24T09:30:52.313 に答える