##使用準備##
###gemインストール###
/Gemfile
gem 'carrierwave'
gem 'rmagick'
-
carrierwave
はアップロードするために必要 -
rmagick
は画像をリサイズする
$ bundle install
エラーが出る場合インストールする
yum -y install libjpeg-devel libpng-devel
yum -y install ImageMagick ImageMagick-devel
###アップローダ作成###
$ rails g uploader image
###カラム追加###
$ rails g migration AddImageToUsers image:string
$ rails db:migrate
- アップロードしたファイル格納用
###Model修正###
app/models/users.rb
mount_uploader :image, ImageUploader
###Controller修正###
app/controllers/users_controller.rb
params.require(:user).permit(:image)
- ストロングパラメータに追加
###Uploader設定変更###
app/uploader/image_uploader.rb
#リサイズ、画像形式を変更に必要
include CarrierWave::RMagick
#上限変更
process :resize_to_limit => [700, 700]
#JPGで保存
process :convert => 'jpg'
#サムネイルを生成
version :thumb do
process :resize_to_limit => [300, 300]
end
# jpg,jpeg,gif,pngのみ
def extension_white_list
%w(jpg jpeg gif png)
end
#ファイル名を変更し拡張子を同じにする
def filename
super.chomp(File.extname(super)) + '.jpg'
end
#日付で保存
def filename
if original_filename.present?
time = Time.now
name = time.strftime('%Y%m%d%H%M%S') + '.jpg'
name.downcase
end
##View変更##
###入力フォーム###
<%= f.label :image 'iamge' %>
<%= f.file_field :image %>
###表示方法###
<% if @user.image? %>
<%= image_tag @user.image.url %>
<% else %>
<%= image_tag "noimage.gif %>
<% end %>
- サムネイルを表示する時は、
.image.thumb.url
とする -
.image
はカラム名