Rails module for carrierwave.
- install gem:
gem 'carrierwave', '~> 0.10.0'
gem 'mini_magick', '~> 4.3'
- generate basic code:
rails g scaffold Pet name:string description:text image:string
rake db:migrate
- create carrievave config file:
# *config/initializers/carrier_wave.rb*
require 'carrierwave/orm/activerecord'
rails generate uploader Image
# you can modify the config
- First, uncomment the MiniMagick line. That should be line 7.
include CarrierWave::MiniMagick
- model with validates:
class Pet < ApplicationRecord
mount_uploader :image, ImageUploader
validates_processing_of :image
validate :image_size_validation
private
def image_size_validation
errors[:image] << "should be less than 500KB" if image.size > 0.5.megabytes
end
end
- modify html.erb part:
- show part:
## old: <%= @pet.image %> ## new: <%= image_tag @pet.image.thumb.url %>
- upload part:
<!--Old--> <div class="field"> <%= f.label :image %> <%= f.file_text :image %> </div> <!--New--> <div class="field"> <%= f.label :image %> <%= f.file_field :image %> <% if f.object.image? %> <%= image_tag f.object.image.thumb.url %> <%= f.label :remove_image %> <%= f.check_box :remove_image %> <% end %> </div>