我在一个项目中使用 Dragonfly,该项目返回大量照片并希望优化 URL。我目前正在获取图像 URL,例如:
超过 256 个字节。我想要类似的东西:
http://localhost:3000/media/1024/240x240_medium.jpg
这符合:
/media/:id/:format
:format
当使用 Dragonfly 和 Rails 以映射到一系列操作并: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
每个图像都有一个(但其他工作正常)。是否可以将其作为渲染处理或以某种方式进行内部重定向(即不需要客户端进行重复请求)?