0

画像ファイルをアップロードするために「carrierwave」gemを使用し、「carrierwave backgrounder」を使用してアップロードを処理し、バックグラウンドでRMagickを使用して画像を処理します(これにはDelayed Jobを使用します)。

すべてが魅力のように機能します。1つを除いて-画像をアップロードして、アップロードフォームのすぐ下に表示したい(すべてが同じページで行われる)。つまり、基本的に何が起こるか - 投稿後にページがレンダリングされるまでにアップロードと画像処理が比較的遅いため - 画像自体はまだ準備ができていないため、image_tag は壊れた「アセット」リンクを示しています (href = "アセット」)。2 ~ 3 秒待つと (数回更新)、画像が画面に表示されます。

したがって、私の質問は、壊れた (まだ利用できない) 画像の代わりに「 LOADING」アニメーション (またはテキスト、または別の画像 - は関係ありません)を何らかの方法で表示し、準備ができたら、画像を表示することです。ユーザー。これは AJAX なしで実行できますか? または、 AJAX でやり直すことを検討する必要がありますか?

話が長くなってすみません。あなたの助けを願っています!

前もって感謝します!:)

4

2 に答える 2

2

私の解決策は非常に簡単です。データベースに「tmp」フィールドを含む画像があるかどうかを観察します(st tmp != null)。もしそうなら - それらはバックグラウンドで処理されているので、私は tmp が null かどうかを尋ね続ける setInterval 関数を使用します: null になると - 処理は確実に完了します。そうでない場合 - アップロードされた画像の代わりにアニメーションの読み込みが実行されています。とてもシンプルです。

于 2012-10-09T19:56:33.017 に答える
1

これを達成するには別の方法があります:

1 つはhttps://github.com/lardawge/carrierwave_backgrounderを使用することです。これにより、使用する新しい列で画像が処理されているかどうかがわかります。

ここで説明されているように、JS ファイル API を使用することもできます

そして、私は他のオプションがあると思います。

于 2012-10-09T18:24:16.863 に答える