【发布时间】:2011-08-18 00:00:16
【问题描述】:
我在一个返回大量照片流的项目中使用 Dragonfly,并希望优化 URL。我目前正在获取如下图像 URL:
超过 256 个字节。我想要类似的东西:
http://localhost:3000/media/1024/240x240_medium.jpg
即符合:
/media/:id/:format
在使用 Dragonfly 和 Rails 时,我将如何添加它,以便 :format 映射到一系列操作,:id 用于查找模型或图像?谢谢!
编辑:
我为我需要的每种格式添加了自定义Mime::Type,并且具有以下功能:
# config/routes.rb
match "/photos/:id/:style", to: "photos#show", as: :media
# app/controllers/photos_controller.rb
def show
@photo = Photo.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.jpg { cache('public', 86400); redirect_to @photo.url(params[:style], 'jpg') }
format.png { cache('public', 86400); redirect_to @photo.url(params[:style], 'png') }
format.gif { cache('public', 86400); redirect_to @photo.url(params[:style], 'gif') }
end
end
# app/views/photos/show.html.erb
<%= image_tag media_path(id: @photo.id, style: 'small', format: 'png') %>
但是,这会为每个图像生成一个302(但其他方面工作正常)。是否可以将其作为渲染处理或以某种方式进行内部重定向(即不需要客户端进行重复请求)?
【问题讨论】:
标签: ruby-on-rails ruby dragonfly-gem