- 浏览: 2547324 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
jsntghf:
peio 写道这个怎么运行?Ruby On Rails的环境搭 ...
多文件上传之uploadify -
peio:
这个怎么运行?
多文件上传之uploadify -
往事如烟1:
我的项目是自己init了一个原始的project,之后将ver ...
React Native热部署之CodePush -
jsntghf:
往事如烟1 写道我按照你的说明进行,发现app退出之后,在进入 ...
React Native热部署之CodePush -
往事如烟1:
我按照你的说明进行,发现app退出之后,在进入不正确,请问是什 ...
React Native热部署之CodePush
paperclip是一个不错的上传控件。尺寸、路径等在model中简单配置即可。
下面看一个简单的配置:
has_attached_file :cover, :styles => { :medium => "130x95>", :small => "70x70>" }, :path => ":rails_root/public/uploads/:class/:attachment/:id/:style/album_cover.:extension", :url => "/uploads/:class/:attachment/:id/:style/album_cover.:extension", :default_url => "/uploads/:class/:attachment/:style/photo_album_thumb.jpg"
类似:class、:attachment、:id、:style,这些都会自动取到相应的值进行填充。
接下来,看一下这些在paperclip中是如何实现的。
def self.interpolations @interpolations ||= { :rails_root => lambda{|attachment,style| RAILS_ROOT }, :rails_env => lambda{|attachment,style| RAILS_ENV }, :class => lambda do |attachment,style| attachment.instance.class.name.underscore.pluralize end, :basename => lambda do |attachment,style| Iconv.iconv("GB2312", "UTF-8", attachment.original_filename.gsub(/#{File.extname(attachment.original_filename)}$/, "")) end, :extension => lambda do |attachment,style| ((style = attachment.styles[style]) && style[:format]) || File.extname(attachment.original_filename).gsub(/^\.+/, "") end, :id => lambda{|attachment,style| attachment.instance.id }, :id_partition => lambda do |attachment, style| ("%09d" % attachment.instance.id).scan(/\d{3}/).join("/") end, :attachment => lambda{|attachment,style| attachment.name.to_s.downcase.pluralize }, :style => lambda{|attachment,style| style || attachment.default_style }, } end
这里面的占位符都是paperclip自带的。
那么,在model中指定路径时,我们想加入一些自定义的占位符,那该怎么办呢?
例如,我们想在路径中加入当天日期。
model中可以这样来配置:
has_attached_file :cover, :styles => { :medium => "130x95>", :small => "70x70>" }, :path => ":rails_root/public/uploads/:class/:today/:attachment/:id/:style/album_cover.:extension", :url => "/uploads/:class/:today/:attachment/:id/:style/album_cover.:extension", :default_url => "/uploads/:class/:attachment/:style/photo_album_thumb.jpg"
在这个路径中,:today占位符paperclip是不会识别的,所以,我们也得加一个关于:today占位符的实现。
最简单的方法是直接改paperclip中interpolations方法的@interpolations变量,在其中加入以下代码:
:today => proc do Time.now.strftime("%Y%m%d") end
最后,重启服务即可。
不过,不建议这么做。
我们可以在控制器中或者其他地方加入以下这段来实现同样的功能:
Paperclip::Attachment.interpolations[:today] = proc do Time.now.strftime("%Y%m%d") end
如果想在路径中加入自定义的其他占位符,原理和这个类似,只需要修改自定义占位符的实现即可。
评论
3 楼
zhanger
2012-12-07
将时间按年,月,日拆分成三级之后,实际取到的变量值变成了一串很长的数字,没想明白其中原因,LZ分析下呗。
具体是在path中用了三个自定义变量:year,month,day
:path => ":rails_root/public/uploads/:class/:year/:month/:day/:attachment/:id/:style/album_cover.:extension",
三个变量的值如下:
Time.now.year.to_i
Time.now.month.to_i
Time.now.day.to_i
实际使用时用的附件的updated_at时间。
具体是在path中用了三个自定义变量:year,month,day
:path => ":rails_root/public/uploads/:class/:year/:month/:day/:attachment/:id/:style/album_cover.:extension",
三个变量的值如下:
Time.now.year.to_i
Time.now.month.to_i
Time.now.day.to_i
实际使用时用的附件的updated_at时间。
2 楼
jsntghf
2010-08-02
jackdong 写道
:today => proc do Time.now.strftime("%Y%m%d") end
已当前时间为占位符是问题滴, 文件保存时是已当前时间保存滴, 如果第二天去读取文件的时候today占位符对应的时间为当前时间, Time.now.strftime("%Y%m%d") 这个时间明显与数据库值不一样,因此就会找不到路径。 还是以updated_at时间为基准好
是的,我这个只是示例,实际做不会用这个时间的,可以用id之类的,参考这个就行了,改个实现而已。
1 楼
jackdong
2010-08-02
:today => proc do Time.now.strftime("%Y%m%d") end
已当前时间为占位符是问题滴, 文件保存时是已当前时间保存滴, 如果第二天去读取文件的时候today占位符对应的时间为当前时间, Time.now.strftime("%Y%m%d") 这个时间明显与数据库值不一样,因此就会找不到路径。 还是以updated_at时间为基准好
发表评论
-
Redmine集成知识库
2013-08-26 22:25 33171、下载redmine的知识库插件:redmine_know ... -
Redmine集成SVN
2013-08-20 20:13 54061、进入redmine目录下的config目录,我的是/Ap ... -
Redmine集成CKEditor
2013-08-15 21:08 4429Redmine的文本格式默认只支持textile,对于普通 ... -
如何使用Assets Pipeline
2011-11-21 16:13 2000Rails 3.1之前,所有资源文件都放在public的子目录 ... -
Rails console显示执行的Sql语句
2011-11-18 08:49 1930调试Active Record时经常会用到rails cons ... -
migrate中使用bigint
2011-11-14 10:40 2065使用mysql时,integer最大是10位。如果想存储更大的 ... -
rails中使用UUID
2011-11-08 08:44 2761可以将uuid的包拷贝到vendor/plugins下,或者在 ... -
Rails里删除Prototype改用JQuery的方法
2011-11-02 10:55 1545首先在Gemfile中添加jquery的gem gem ... -
ActionView::Template::Error (***.css isn’t precompiled)
2011-10-24 11:10 2523升级到Rails 3.1后,当rails s -e produ ... -
Rails Bundle简介
2011-10-21 09:00 1614Rails 3开始使用bundle来管理项目的gem依赖。该命 ... -
非WEB程序中使用Active Record
2011-10-18 16:08 1477一、新建一个Ruby文件 require " ... -
Rails中使用多选框
2011-10-14 10:10 2348<%= select_tag("tag_ids ... -
Could not find a JavaScript runtime
2011-10-13 13:17 1702Rails3.1下报出下面的错误: /gems/exe ... -
通过POP3读取邮件
2011-10-06 01:36 1603require 'net/pop' pop ... -
观察者模式
2011-10-01 16:24 1567require 'observer' class ... -
ruby1.9的中文问题
2011-09-29 08:31 1861STATUS = { "0" =&g ... -
列出所有的控制器以及方法名
2011-09-27 10:43 1621controllers = Dir.new("#{R ... -
abort的使用
2011-09-22 13:30 1560很多人可能会这样用: def stop_error(m ... -
rails3中mysql2的安装
2011-09-20 16:01 2095rails3中默认的mysql适配器是mysql2,执行以下命 ... -
让查询变得更优雅
2011-09-19 20:19 1121RailsWhere可以让代码变得更简洁。 看一 ...
相关推荐
在Ruby on Rails框架中,Paperclip是一个非常流行的用于处理文件上传的库。它提供了一种简单而优雅的方式来管理和处理模型中的附件,如图片、文档等。Paperclip与ActiveRecord紧密集成,使得在Rails应用中添加文件...
Paperclip - Responsive Professional Theme for Business Projects and Mobile Apps Perfect for business and personal use Built with LESS Looks great on all major browsers, tablets and phones 21 unique ...
如果您实际上正在使用 ,并且您想要附件具有自定义路径。 请不要使用RAILS_ROOT 。 为什么? 每一个当您将应用程序部署到,您正在更改RAILS_ROOT,因此您所有上传的文件都将丢失,您的存储桶将一团糟! 默认的...
Paperclip 是 Rails 框架的一个插件,用于扩展 ActiveRecord 以支持简单的文件附件的功能。 标签:Paperclip
paperclip-av-transcoder, 使用 ffmpeg/avconv的Paperclip 音频/视频转码器 Paperclip 转码器使用 ffmpeg/avconv的Paperclip 音频/视频转码器。这是( https://github.com/owahab/paperclip-ffmpeg )的替代品。状态
可以在以下位置找到Paperclip以及PaperclipOptimizer的保养好的货叉: PaperclipOptimizer是一个处理器,用于优化和缩小上传的图像。 这仅仅是围绕一个瘦包装 ,它支持许多外部优化库如 , , , , , , , , ,...
gem 'paperclip_torrent', github: "fattymiller/paperclip_torrent" 在模型中,正常设置has_attached_files ,包括:torrentify处理器,如下所示: has_attached_file :attachment, { styles: { audio_128kbps_...
回形针 回形针旨在用作ActiveRecord的简单文件附件库。 其目的是使设置尽可能简单,并尽可能将文件与其他属性一样对待。 这意味着它们不会保存到磁盘上的... Paperclip现在需要Ruby版本> = 2.0.0和Rails版本3.2,> =
回形针上传到 S3 要求 aws-sdk 回形针 宝石安装 Gemfile gem ' aws-sdk ' gem ' paperclip ' 并运行 bundle install 创建 s3 这里 设置s3信息 从获取访问密钥和秘密密钥并将它们写好。 然后创建一个config/aws....
回形针水印描述这是一个简单的 Paperclip 处理器,用于在 Paperclip 的图像上应用水印。 水印将调整大小以适合基本图像。 很少有选项可用于指定位置和不透明度: watermark_distance_from_top : 以百分比指定从顶部...
大家对服务端应该都不陌生了,我就不多介绍了,主要是点击server.jre,需要用JAVA8 64位运行,然后稍等一会,会生成mod文件夹,运行配置同意elua协议就可以开服务器了
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...
设定宝石文件gem "mongoid-paperclip" 接下来,假设我们有一个用户模型,并且我们希望允许我们的用户上传头像。 Rails.root / app / models / user.rb-包含Mongoid :: Paperclip模块并调用提供的类方法class User ...
为了更好地利用 Paperclip,用户可以自定义配置其行为,根据个人工作习惯设置触发特定操作的条件。例如,你可以设定当剪贴板中出现特定类型链接时自动保存到指定文件夹,或者当复制特定格式的文本时,自动发送到某个...
您的 Paperclip 模型将需要两个额外的二进制列: paperclip_encryption_key和paperclip_encryption_iv来存储加密机密。 class AddPaperclipEncryptionKeyAndPaperclipEncryptionIvToMyModel < A
综合解决方案请查看我的paperclip_database分支,并将此解决方案集成到:。安装由于 PaperclipDatabaseAttachmentsResponder 覆盖了 paperclip_database 的内部 api,因此使用精确的'2.2.1'版本。 将这些行放入您的...
将administrate-field-paperclip clipclip和kt-paperclip paperclip添加到您的Gemfile中: gem 'administrate-field-paperclip' gem 'kt-paperclip' 安装: $ bundle install 用法 按照上的开始使用模型和迁移。...
DM-Paperclip是Thoughtbot的Paperclip插件的端口,可与DataMapper一起使用。 该插件与原始的面向ActiveRecord的回形针完全兼容。 您可以采用现有的ActiveRecord数据库并将其与DataMapper一起使用。 该模块还包括...
氦,这里是回形针PaperClip内容收录仓库,你可以在这里找到往期节目的相关内容。 使用 在线浏览 目前,我们有以下站点供您在线浏览本仓库的内容。 GitHub页面 该站点由GitHub Actions自动构建并部署在GitHub Pages...
在 Rails 4.0.0 上运行带有 AWS S3 演示的 Paperclip 教程这是一个教程和演示,用于获取在 Rails 4.0.0 上运行的带有 AWS S3 上传的 Paperclip。 在本教程中,我们将创建一个简单的站点,可以在其中创建文章并可以将...