CarrierWave デフォルトの画像を表示する default_url
//
前置き
下のページで画像をアップロードする機能は実装済み 【Rails】CarrierWaveとrmagickで画像アップロード機能を作る | おすすめのプログラミングスクール比較!最短で上達するなら?
画像が保存されていない場合のデフォルトの画像を呼び出したい
default_url
というメソッドが用意されています。これを$ rails g uploader image
で生成したクラスに実装する事で、自分が設定したいデフォルトの画像を呼び出すことが可能です。
github.com
class ImageUploader < CarrierWave::Uploader::Base def default_url(*args) "/images/" + [version_name, "default.png"].compact.join('_') end end
この場合、/public/images/
下に画像を保存しておく
呼び出し方
下の様に呼び出す際に、image
がnil
か判断して自動で呼ばれます。
current_user.image.url
画像の名前はdefault.png
にしておく。
サイズ指定
一番上の参考リンク通りに実装した場合、下の様な実装になっているはず。
class ImageUploader < CarrierWave::Uploader::Base # リサイズしたり画像形式を変更するのに必要 include CarrierWave::RMagick # 画像の上限を640x480にする process :resize_to_limit => [640, 480] # 保存形式をJPGにする process :convert => 'jpg' # サムネイルを生成する設定 version :thumb do process :resize_to_limit => [300, 300] end version :thumb100 do process :resize_to_limit => [100, 100] end version :thumb30 do process :resize_to_limit => [30, 30] end .... end
そして次の様に呼ぶことで、リサイズした画像のurlを取得できる。
current_user.image.thumb20.url
この時、default_url
側に渡される名前はthumb20"+"default.png
となるため、サイズの指定も可能になる。つまりファイル名をthumb20_default.png
としておく。