使用carrierwave 上传图片 ( using carrierwave to upload images)
访问量: 3600
注意: 以下仅支持 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' %>