J'utilise Dragonfly dans un projet qui renvoie un grand nombre de photos et cherchait à optimiser les URL. Je reçois actuellement des URL d'image comme:Libellule et URL courtes
Ce qui est plus de 256 octets. Je voudrais quelque chose comme:
http://localhost:3000/media/1024/240x240_medium.jpg
Cela est conforme à:
/media/:id/:format
Comment pourrais-je aller sur l'ajout de ceci lorsque vous utilisez Dragonfly et Rails tels que :format
cartes à une chaîne d'opérations et :id
est utilisé pour trouver le modèle ou l'image? Merci!
Edit:
J'ai ajouté coutume Mime::Type
pour chacun des formats que j'ai besoin et ont le travail suivant:
# 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') %>
Cependant il en résulte une 302
pour chaque image (mais autrement fonctionne bien). Est-il possible de gérer cela comme un rendu ou d'une certaine façon faire une redirection interne (c'est-à-dire ne pas obliger le client à faire des demandes en double)?