我们可以搭配用两个gem,CarrierWaver 和 MiniMagick,来实现图片上传功能。
具体步骤
- 安装这两个gem,先在Gemfile中加入以下两行
gem 'carrierwave'
gem 'mini_magick'
执行bundle install
重启服务器rails s
- 产生uploaders/image_uploader.rb文件
执行rails g uploader image
- 给需要上传图片的model(此处用product model),增加image栏位,执行:
rails g migration add_image_to_products image:string
rake db:migrate
- 在product model里,挂上ImageUploader
class Product < ActiveRecord::Base
mount_uploader :image, ImageUploader
重点:注意容易出错的点
- 通常步骤如上,即从1 -> 2 -> 3 -> 4,则不会出错
- 如果颠倒了顺序,比如把步骤3放到前面,即3 -> 4 -> 1 -> 2,则会出现下面的问题。
问题:Rails console时,出错
原因是:
CarrierWave和ActiveRecord之间,没有关联
因此,解决方法是:
在config/environments/xxx.rb文件中,加入下面一行,建立关联:
require 'carrierwave/orm/activerecord'
网友评论