2011-07-02 36 views
4

日誌說:的Rails 3:圖片流錯誤:「像......無法顯示,因爲它包含錯誤」

Started GET "/assets/2/thumb" for 110.174.88.80 at Fri Jul 01 20:11:35 -0700 2011 
    Processing by AssetsController#show as HTML 
    Parameters: {"id"=>"2", "style"=>"thumb"} 
[/home/misha_moroshko/myfamily.moroshko.com/public/images/thumb.jpg] found! 
Sent file /home/misha_moroshko/myfamily.moroshko.com/public/images/thumb.jpg (0.2ms) 
Completed 200 OK in 2ms 

如果你直接去圖像,獲取正常。

請注意,這是我真正的問題的簡化示例。在真實情況下,圖像不在public文件夾中,但錯誤是相同的。

什麼可能導致這樣的錯誤?


rails -v 
=> Rails 3.0.1 
ruby -v 
=> ruby 1.8.7 (2008-08-11 patchlevel 72) [x86_64-linux] 

相關代碼:

# config/routes.rb 
match "assets/:id/:style" => "assets#show" 

class AssetsController < ApplicationController 
    def show 
    path = Rails.root.join("public", "images", "thumb.jpg").to_s 
    if File.exist?(path) 
     logger.fatal "[#{path}] found!" 
     send_file(path, { :type => "image/jpeg", :disposition => "inline" }) 
    else 
     logger.fatal "[#{path}] not found!" 
    end 
    end 
end 

回答

5

config/environments/production.rb更換

config.action_dispatch.x_sendfile_header = "X-Sendfile" 

config.action_dispatch.x_sendfile_header = "X-Accel-Redirect" 

解決了這個問題!

+0

非常好,很高興你解決了它:) – d11wtq

+0

哇,我們不應該這樣做...但我很高興至少有一點記錄。 – btelles

0

的URL http://www.myfamily.moroshko.com/assets/2/thumb發送正確的頭信息,但在響應未發送的身體。你是否刪除了@amb建議添加的代碼?它好像進入了你的else模塊,並且只是在你的控制檯上記錄一個錯誤。

+0

請立即檢查。我看到:'[/home/misha_moroshko/myfamily.moroshko.com/public/images/thumb.jpg]發現!' –

+0

仍然沒有得到響應正文。你可以在命令行(在Mac/Linux上)使用'curl -i http:// www.myfamily.moroshko.com/assets/2/thumb'來試用它。 – d11wtq

+0

好吧,可能是這個問題。問題是爲什麼?這不是「否則」部分,這是肯定的...任何想法可能導致身體消失? –

相關問題