Back

使用carrierwave 上传图片 ( using carrierwave to upload images)

发布时间: 2014-10-17 06:05:00

注意: 以下仅支持 carrierwave  0.9.0 版本. 0.10.0 与 1.0 版本的用法略有变化, 请注意查看官方文档 

1.0 版本仅支持 ruby 2.0 与 rails 4 . 

1  in Gemfile:   gem 'carrierwave', '0.9.0'

2.  

$ rails generate uploader Logo
# this will create file: app/uploaders/logo_uploader.rb
class AvatarUploader < Logo::Uploader::Base
  storage :file
end

同时, 务必记得 为对应的model 增加 列:  Avatar 

# -*- encoding : utf-8 -*-
class AddSnapshotToMarketModules < ActiveRecord::Migration
  def change
    add_column :market_modules, :avatar, :string, default: '', comment: '保存截图路径'
  end
end

3. in your model:

 class Item < ActiveRecord::Base
+  mount_uploader :logo, LogoUploader
 end

4. in your view: 

    <%= f.file_field :logo %>

5. in controller :

# do nothing....  
item.create(params[:item])
# or 
item.logo = params[:file]
item.save

# 对于 rails4, 只需要把 avatar 这个属性加入到 参数白名单列表中: 
def item_params
    params.require(:item).permit(:market_id, :name, :level, :avatar)
end

6. usage: 

<%= image_tag @item.logo.url, :style => 'height: 200px' %>

Back