美文网首页Ruby
图片上传功能: CarrierWave

图片上传功能: CarrierWave

作者: Sarah_友妹 | 来源:发表于2017-10-16 21:41 被阅读16次

我们可以搭配用两个gem,CarrierWaver 和 MiniMagick,来实现图片上传功能。

具体步骤

  1. 安装这两个gem,先在Gemfile中加入以下两行
gem 'carrierwave'
gem 'mini_magick'

执行bundle install
重启服务器rails s

  1. 产生uploaders/image_uploader.rb文件
    执行rails g uploader image
  2. 给需要上传图片的model(此处用product model),增加image栏位,执行:
    rails g migration add_image_to_products image:string
    rake db:migrate
  3. 在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'

相关文章

网友评论

    本文标题:图片上传功能: CarrierWave

    本文链接:https://www.haomeiwen.com/subject/zgbluxtx.html