Hi friends,
Today I am going to tell you how we can upload images in rails using carrierwave gem. It automatically creates folder inside public folder and uploads images there. You can also customize the upload location. Here is the step-by-step process of how we can integrate it to our application:
1. Added gem 'carrierwave' to the Gemfile
gem 'carrierwave'
2. Run the bundle
bundle install
3. Generate an uploader using:
rails generate uploader ProfilePic
It generates a file app/uploaders/profile_pic_uploader.rb
4. Add a field in the model where you want to store the uploaded image path
rails g migration add_profile_pic_to_users profile_pic:string
rake db:migrate
5. Open your model file and mount the uploader:
class User < ActiveRecord::Base
mount_uploader :profile_pic, ProfilePicUploader
end
6. In the view file where you want to upload the profile pic add this:
<tr>
<td><%= f.label :profile_pic %></td>
<td><%= f.file_field :profile_pic %></td>
</tr>
Now once you save the profile pic it will upload the image in public folder and also save the path of the image to profile_pic field of the user model.
7. For storing thumbnail with image, you can configure it inside profile_pic_uploader.rb and uncomment the following section
version :thumb do
process :resize_to_fill => [50, 50]
end
8. To compress images you need to install imagemagic in your machine. You can do it by typing
sudo apt-get install imagemagick
9. For using image magick we are here installing the gem mini_magick. So add this to your Gemfile and run bundle
gem 'mini_magick', '~> 4.3'
10. Now uncomment the following line in your profile_pic_uploader.rb to include minimagic
include CarrierWave::MiniMagick
Thus you are now ready to upload images using carrierwave. Hope you liked it.
0 Comment(s)