2011-09-19 7 views
0

params로 끝나는 이미지 파일을 얻지 못하기 때문에 이미지 경로에 문제가 있습니다. 다른 아마존 S3 늘 이미지를로드하기 때문에이 filending 필요params로 끝나는 파일을 가져 오는 방법은 무엇입니까? .png, .jpg

def photore 
    redirect_to "http://s3-eu-west-1.amazonaws.com/mybucket/photographer/image/#{params[:id]}/#{params[:filename]}" 
end 

:

match '/photographer/image/:id/:filename' => 'application#photore' 

그리고 내 컨트롤러 :

여기 내 경로입니다.

답변

4
aNoble가 올바른 방향으로 가고

의 Rails 형식 처리는 아마도 확장을 먹었을 것이지만 .html, .js 또는 이해할 수있는 다른 확장자가 아니기 때문에 파일을 버리는 것일 수도 있습니다. 경로의 :filename에 대한 몇 가지 제약 조건을 설정하십시오 :

match '/photographer/image/:id/:filename' => 'application#photore', :constraints => { :filename => /.*/ } 

확장이 params[:filename]의 한 부분으로 남아있을 수 있도록해야 그.

3

레일 3.1을 실행한다고 가정 할 때, 당신이 찾고있는 것이 params[:format]이라고 생각합니다. 이 기능은 3.0에서 3.1로 변경되었지만 잘 설명되지 않았습니다.

def photore 
    redirect_to "http://s3-eu-west-1.amazonaws.com/mybucket/photographer/image/#{params[:id]}/#{params[:filename]}.#{params[:format]}" 
end 

아니면 match 방법에 :format => false을 통과 할 수와 같은 당신의 photore 방법을 유지해야한다 :

이 시도

match '/photographer/image/:id/:filename' => 'application#photore', :format => false 
+0

내 경로가 일치해야합니다 : 3.09 레일을 사용하고 있습니다 : match '/photographer/image/:id/:filename.:format? –

+0

"/photographer/image/55/Sk_rmbillede_2011-08-18_kl._14.34.58.png"와 일치하는 경로가 없습니다. "." 시간 내에? 경로에서 나는 '/photographer/image/:id/:filename.:format'와 일치한다. –

+0

나는 match/photographer/image/: id/: 파일 이름. : extension'과'params [: extension]'을 믿는다. 작동 할 것이다. 아마도 미래의 충돌을 막기 위해': format'을 사용하는 것을 피하는 것이 가장 좋습니다. 또한 globbing 요청을 할 수 있어야합니다 :'match/photographer/image/: id/* filename' 그리고 나서 원래의'params [: filename]'을 사용하십시오. – aNoble

관련 문제