2011-08-18 2 views
3

나는 사진의 큰 흐름을 돌려주고 URL을 최적화하려고하는 프로젝트에서 잠자리를 사용하고 있습니다. 256 바이트를 초과잠자리와 짧은 URL

http://localhost:3000/media/BAhbCFsHOgZmSSJgZmRlL2ZkZTAxYzQ0LTM4Y2UtNGU0ZS1iOWRlLWUwZmUxNWUwN2JmMC83Mzk1NmZlMC05ZTA5LTQzNWUtODUyMC00MzFlYzQxMzQ1OTQvb3JpZ2luYWwuanBlZwY6BkVUWwg6BnA6CnRodW1iSSIMMjQweDI0MAY7BkZbCTsHOgxjb252ZXJ0SSIQLXF1YWxpdHkgODAGOwZGMA/240x240.jpg

: 나는 현재 같은 이미지 URL을 얻고있다.

http://localhost:3000/media/1024/240x240_medium.jpg

가에 부합하는지 : 내가 좋아하는 뭔가하고 싶은 작업의 체인에

/media/:id/:format 

가 어떻게 잠자리와 레일 등이 :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 결과를 (하지만 그렇지 않은 경우 잘 작동합니다.) 이를 렌더링으로 처리하거나 내부 리디렉션 (클라이언트가 중복 요청을하지 않아도 됨)을 처리 할 수 ​​있습니까?

답변

8

당신이 컨트롤러 액션을 사용할 필요가 없습니다 - 당신은 잠자리 엔드 포인트를 사용할 수 있습니다 - 볼 http://markevans.github.com/dragonfly/file.URLs.html#Routed_Endpoints

예를 들어,

match '/photos/:id/:style.:format' => Dragonfly[:images].endpoint { |params, app| 
    Photo.find(params[:id]).image.thumb(params[:style]).encode(params[:format]) 
} 

또는 같은 뭔가 (위의 코드를 시도하지 않은하지만 그 라인을 따라 뭔가있을거야) 나는 클라이언트가 짧은 URL을 필요로 비슷한 상황으로 실행 한

1

pdfs를 다운로드 할 수 있습니다.

#file.rb 
class File < ActiveRecord::Base 
    dragonfly_accessor :pdf 
end 

def pdf_link 
    return "/pdf/#{self.filename}.pdf" 
end 

#routes.rb 
get '/pdf/:filename' => Dragonfly.app.endpoint { |params, app| 
    File.where(filename: params[:filename]).first.pdf 
} 

이 질문에 직접 대답은 아니지만, 어쩌면 아직도 누군가의 URL을 단축하는 방법을 찾고 도움이 될 수 있습니다

건물의 마크의 대답과 dragonfly docs를 찾고 나는이 함께했다 잠자리