2011-09-19 67 views
0

我的圖片路由出現問題,因爲它沒有得到以params結尾的圖片文件。Rails如何獲取以params結尾的文件? .png,.jpg

這裏是我的路線:

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

而且我的控制器:

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

我需要filending因爲別的亞馬遜S3不會加載圖像。

回答

4

aNoble在正確的方向前進時, Rails格式處理可能正在進行擴展,但它也可能將其丟棄,因爲它不是.html.js或它理解的任何其他擴展。試着在你的路線設置上:filename一些限制:

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

這應該允許離開延伸爲params[:filename]一部分。

3

假設你運行的是Rails 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 

或者你應該能夠通過:format => falsematch方法,並保持你的photore方法相同:

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

我使用rails 3.0.9我的路線應該是: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 /:filename。:extension'然後是'params [:extension]'會工作。可能最好避免使用':format'來防止未來的衝突。 此外,你也應該可以做請求globbing:'match/photographer/image /:id/* filename',然後就像你最初一樣使用'params [:filename]'。 – aNoble

相關問題