1

画像アセットのサム バージョンがあります。

version :thumb, :if => :image? do
  process :resize_to_fill => [118, 100]
end

これで、画像以外のアセットに対して RoutingError が発生します。AssetUploader.rb のサム メソッドをハッキングしてみました。

def thumb
  if has_image_extension?(file.original_filename)
    super
  else
    "/assets/file_types/#{extension(file.original_filename)}.jpg"
  end
end

これはエラー (NoMethodError: super: スーパークラス メソッド `thumb' がありません) を生成しますが、これは理にかなっています。

Assetモデルでthumb_urlメソッドを作成するよりも、これを修正する良い方法はありますか?

4

1 に答える 1

0

まずはversionCarrierWave クラスのインスタンスのメソッドです。最初の引数は、保存されたファイル名に文字列として追加されるシンボルでなければなりません。

ただし、:ifシンボルは、バージョンを作成する必要があるかどうかを決定するためのメソッド名 (実装する必要があります) を受け取ります。

問題は、あなたの:image?方法がどのように実装されているかです!

私はそれの素朴な実装をここに持っています:

def image?( new_file )
  # TODO FIXME wrong way to check for image
  new_file.content_type.include?('image') && 
  !new_file.content_type.include?('photoshop') && 
  !new_file.content_type.include?('svg')
end
于 2012-12-14T15:31:27.657 に答える