Paperclip 是 Rails 的一个处理 attachment 的插件,相对于以往的 FileColumn 在灵活性和效率上更胜一筹,而且代码也比较好看。这个视频
简单的介绍了 Paperclip 的使用方法。
默认的设置,URL 的占位符中与模型本身相关的只有 id,但是一些情况下,你可能会更希望以其他形式来组织你的附件目录 - 比如以 SKU 来代替数据库记录的 id。这里我们暂不讨论这种做法的好坏,双方面的,好处是目录结构更具有维护性,坏处是万一以后升级数据库,SKU 加个前缀什么的…
Here we go!
使用 paperclip 需要在 model 中调用 has_attached_file
方法,检查文档,有一些简单的使用样例,但是没有我们需要的。通过方法描述我们知道这个方法建立了一个 Paperclip::Attachment 对象,我们继续看文档。对象的方法很少,首先思考:应为我们需要配置的是 attachment 的 url 规则,那么应当是对应整个类而不是单个实力,因此我们只关注 Peperclip::Attachment 的类方法,只有两个。default_options 没有描述,而且展开代码发现并不是我们需要的。
引用
# Paperclip::Attchment.interpolation
A hash of procs that are run during the interpolation of a path or
url. A variable of the format :name will be replaced with the return
value of the proc named “:name”. Each lambda takes the attachment and
the current style as arguments. This hash can be added to with your own
proc if necessary.
这正是我们需要的,接下来的扩展就非常方便了:
# app/models/product.rb
class Product < ActiveRecord::Base
has_attached_file :photo,
:style => { :thumb => '64x64>' },
:url => '/images/products/:to_param.:extension'
def to_param
return self.sku
end
end
# config/initializers/paperclip.rb
Paperclip::Attachment.interpolations.merge!(
:to_param => lambda { |attachment, style| attachment.instance.to_param }
)
在这里不直接使用 :sku 作为占位符而使用 :to_param 是为了在其他模型中更加的灵活。
分享到:
- 2009-01-23 19:24
- 浏览 1862
- 评论(4)
- 论坛回复 / 浏览 (4 / 3380)
- 查看更多
相关推荐
Paperclip 是 Rails 框架的一个插件,用于扩展 ActiveRecord 以支持简单的文件附件的功能。 标签:Paperclip
这个 gem 使用常规文件系统存储提供程序和 ActiveRecord 通过自动附件加密扩展了 Paperclip。 安装 将此行添加到应用程序的 Gemfile 中: gem 'paperclip-storage-encrypted_filesystem', git: '...
Attachment on the Fly 是一个扩展 Paperclip 的模块,它允许动态图像调整大小而无需首先通过 ActiveRecord。 这个 gem 只能调整图像大小。 如果您尝试调整 PDF 或其他附件的大小,则不会发生任何事情。 要求 思想...
回形针数据库附件响应器PaperclipDatabaseAttachmentsResponder 是一个扩展的 gem。 您不必再为downloads_files_for :user, :avatar提供带有downloads_files_for :user, :avatar特殊控制器!综合解决方案请查看我的...
该宝石扩展了具有存储的功能。 设置 gem "paperclip-dropbox" , ">= 1.1.7" 例子: class User < ActiveRecord xss=removed> :dropbox , :dropbox_credentials => Rails . root . join ( "config/dropbox.yml" ) ...
Paperclip的一个简单扩展,可以使用jCrop裁剪上载的图像。 安装 在您的Gemfile中包含papercrop或手动安装 gem install papercrop 您需要在资产中添加所需的文件... 在您的application.js中 //= require jquery //= ...
【Paperclip 开源项目详解】 ...结合开源软件的优势,Paperclip 不断优化和扩展,满足了不同用户的需求,成为日常办公和开发工作中的得力助手。如果你经常处理大量信息,那么 Paperclip 绝对值得你尝试。
它目前仅适用于猫鼬,但已设置为易于扩展以与其他数据库一起使用。 另外,它目前可与AWS s3和文件系统一起使用,但将来应该很容易添加其他存储方法。 要安装(模块之一不能将其他模块作为依赖项包括在内吗?) ...
回形针谷歌驱动器 PaperclipGoogledrive 是一个可以扩展 Google Drive 的回形针存储空间的宝石。 适用于 Rails 3.x && RAILS 4x。安装将此行添加到应用程序的 Gemfile 中: gem 'paperclip-googledrive-new'然后执行...
部分 Tempfile 扩展名是从 Paperclip 复制的。 谢谢! 这个 gem 是开源 SOA 框架 Vidibus 的一部分: 安装 将依赖项添加到应用程序的 Gemfile 中: gem "vidibus-tempfile"然后在你的控制台上调用`bundle install`...
语言:English (United States) 为您访问的每个网页添加clippy。 将Microsoft的Clippy Virtual Assistant添加到每个网页。 他有动画。 他帮助你(不是他曾经做过的)。 他只是在你的屏幕上发冷。
:paperclip: 您正在查看即将发布的文档。 如果您正在寻找旧版本的文档,请参考以下分支之一: ⁃ ⁃ ⁃建立和预览您的网站配置在安全模式下运行在模板中使用AsciiDoc内容自定义生成HTML 启用Asciidoctor扩展启用...
Rails框架的一个显著特点是其丰富的 gems 生态系统,书中会介绍如何选择和使用这些gem来扩展应用的功能,如Devise用于身份验证,CanCanCan进行权限管理,Carrierwave或Paperclip处理文件上传等。同时,还会讲解如何...
另外,Rails社区非常活跃,有许多gem(Ruby的包管理系统)可供扩展功能,如Devise用于身份验证,Pundit或CanCanCan处理授权,Carrierwave或Paperclip处理文件上传,Bootstrap或Sass提升前端设计等。这些gem在实际...
RoR社区活跃,有许多优秀的gem(RoR的扩展库)可供使用,例如Devise用于用户认证,CanCanCan进行权限控制,Carrierwave或Paperclip处理文件上传,Bootstrap gems帮助快速构建响应式界面等。这些gem极大地扩展了RoR的...
:paperclip: 资料下载 我们建议您下载一个稳定的版本。 Alpha和Beta版本适用于开发人员(除非您想查看最新功能并给我们一些反馈)。 最新的公共发行版v4.3.3 (推荐) 从Google网上商店和Firefox插件页面快速安装...
7. **部署与扩展**:可能会讲解如何在各种服务器环境(如Heroku、AWS)上部署Rails应用,以及负载均衡和水平扩展的策略。 8. **Rails插件与gem**:介绍常用的Rails插件和gem库,如Devise用于身份验证,Carrierwave...
在实际项目中,CarrierWave还可以与其他库结合使用,比如Paperclip或ActiveStorage,它们也提供了文件上传的解决方案。选择哪个库主要取决于项目需求,如存储需求、性能考虑以及对社区支持的依赖。 总结起来,Ruby-...
5. **Rails的社区和生态系统**:Rails有强大的社区支持,开发者可以利用众多gem(Ruby的库)扩展功能,如Devise(身份验证),Paperclip或Carrierwave(文件上传),Bootstrap或Foundation(前端框架)等。...
对于文件操作,`paperclip` 和 `carrierwave` 是常见的文件上传插件,它们方便地处理图片和其他文件的上传和存储。另外,`active_storage` 是 Rails 5.2 引入的内置文件处理系统,与 AWS S3 或其他云存储服务集成,...