转自:
http://club.udong.com.cn/group/topic/116325 作者:
BlackDuke
paperclip目前最新版本为2.3.8:
$ gem install paperclip
通过bundle安装,在Gemfile中加入以下配置:
gem 'paperclip', '~> 2.3.6'
然后运行
bundle install
如何使用
比如用户模型中需要加入头像这个功能,那么,我们得先生成一个添加paperclip默认字段的migration:
$ rails g migration add_avatar_columns_to_users
然后在add_avatar_columns_to_users.rb中加入以下代码:
class AddAvatarColumnsToUser < ActiveRecord::Migration
def self.up
add_column :users, :avatar_file_name, :string
add_column :users, :avatar_content_type, :string
add_column :users, :avatar_file_size, :integer
add_column :users, :avatar_updated_at, :datetime
end
def self.down
remove_column :users, :avatar_file_name
remove_column :users, :avatar_content_type
remove_column :users, :avatar_file_size
remove_column :users, :avatar_updated_at
end
end
然后运行:
$ rake db:migrate
paperclip默认的字段添加完以后,我们需要在user模型中做一些配置:
class User < ActiveRecord::Base
has_attached_file :avatar,
:url => "/system/pictures/:id/:style_:basename.:extension",
:path => ":rails_root/public/system/pictures/:id/:style_:basename.:extension",
:styles => { :medium => "300x300>", :thumb => "100x100>" }
validates_attachment_size :avatar, :less_than => 2.megabytes
end
在这里需要做几点解释,第一,has_attached_file :avatar中的:avatar是根据字段名字来的,因为字段名字统一名称成了avatar_xxxx_xxx,如果字段名字命名成 data_file_name等,那么 配置将改为has_attached_file :data 第二,validates_attachment_size :avatar是用来限制文件大小的。
在view中,我们应该对user的form进行如下改造:
user_path, :html => { :multipart => true } do |form| %>
图片上传后,paperclip会自动根据user模型中的配置,把图切成你想要的尺寸,在这里,因为涉及到切图,所以将会用到imagemagick这个包,所以这个包是需要安装的:
Ubuntu下:
$ sudo apt-get install imagemagick
装完imagemagick后,就可以成功切图了。那么,我们要如何取出响应尺寸的图片呢?
这样子就可以有简单的切图功能了。
链接:
https://github.com/thoughtbot/paperclip
$ gem install paperclip
通过bundle安装,在Gemfile中加入以下配置:
gem 'paperclip', '~> 2.3.6'
然后运行
bundle install
如何使用
比如用户模型中需要加入头像这个功能,那么,我们得先生成一个添加paperclip默认字段的migration:
$ rails g migration add_avatar_columns_to_users
然后在add_avatar_columns_to_users.rb中加入以下代码:
class AddAvatarColumnsToUser < ActiveRecord::Migration
def self.up
add_column :users, :avatar_file_name, :string
add_column :users, :avatar_content_type, :string
add_column :users, :avatar_file_size, :integer
add_column :users, :avatar_updated_at, :datetime
end
def self.down
remove_column :users, :avatar_file_name
remove_column :users, :avatar_content_type
remove_column :users, :avatar_file_size
remove_column :users, :avatar_updated_at
end
end
然后运行:
$ rake db:migrate
paperclip默认的字段添加完以后,我们需要在user模型中做一些配置:
class User < ActiveRecord::Base
has_attached_file :avatar,
:url => "/system/pictures/:id/:style_:basename.:extension",
:path => ":rails_root/public/system/pictures/:id/:style_:basename.:extension",
:styles => { :medium => "300x300>", :thumb => "100x100>" }
validates_attachment_size :avatar, :less_than => 2.megabytes
end
在这里需要做几点解释,第一,has_attached_file :avatar中的:avatar是根据字段名字来的,因为字段名字统一名称成了avatar_xxxx_xxx,如果字段名字命名成 data_file_name等,那么 配置将改为has_attached_file :data 第二,validates_attachment_size :avatar是用来限制文件大小的。
在view中,我们应该对user的form进行如下改造:
user_path, :html => { :multipart => true } do |form| %>
图片上传后,paperclip会自动根据user模型中的配置,把图切成你想要的尺寸,在这里,因为涉及到切图,所以将会用到imagemagick这个包,所以这个包是需要安装的:
Ubuntu下:
$ sudo apt-get install imagemagick
装完imagemagick后,就可以成功切图了。那么,我们要如何取出响应尺寸的图片呢?
这样子就可以有简单的切图功能了。
链接:
https://github.com/thoughtbot/paperclip