4

Carrierwave を使用して、ユーザーが投稿に画像を添付できるようにしています。投稿のリストに、サムネイルを (haml で) 次のように表示します。

%td= image_tag post.image.url :thumb

新しい投稿を作成するときに検証が失敗した場合、次のようにキャッシュを表示します。

= image_tag "/#{ImageUploader::cache_dir}/#{post.image_cache}"

私が理解できないのは、キャッシュされたサムネイルを表示する方法です。ファイルシステムをチェックすると、キャッシュされたイメージと同じディレクトリに存在することが確認されます。私は試した

= image_tag post.image_cache :thumb

しかし、それはエラーですwrong number of arguments (1 for 0)

4

2 に答える 2

1

validationいいえ、エラーがある場合、AFAIK Carrierwave はバージョンをキャッシュしません。

私が正しければ、Carrierwave はバージョンをキャッシュし、それをafterコールバック フックで処理し、

検証チェックはbeforeコールバック フックで実行されます。

あなたはこのようなことをすることができます

 before_callback :check_for_validation
  // do some logic
 after_callback :cache_the_version and process it 

前のコールバックにエラーがあると、Carrierwave は後者のコールバック チェーンをバイパスします。

したがって、検証エラーが発生したときにバージョンがキャッシュされていません。(有効でない場合にバージョンを処理して作成する理由を考えると、予想される動作だと思います)

エラー

wrong number of arguments (1 for 0)

#{column}_cacheあなたの場合、 itimage_cacheメソッドは引数を取らないため、これも予想される動作です。

thumb検証エラーを受け取ったときにバージョンが決してキャッシュされないことを考えると、バージョンのキャッシュ画像を表示する方法はないと思います(あなたの場合)

私が間違っている場合は修正してください:)

この助けを願っています

于 2013-08-05T14:53:13.107 に答える