首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

使用paperclip来为rails3下传文件

2012-12-25 
使用paperclip来为rails3上传文件?转自:?http://club.udong.com.cn/group/topic/116325??作者:BlackDuke?p

使用paperclip来为rails3上传文件

?

转自:?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?

?

热点排行