2015-08-29 26 views
0

Ruby on rails應用程序創建的動態圖像僅顯示在開發中,但不顯示在生產中。這裏是控制器:RoR:推向生產並且無法訪問圖像

def show 
    require 'gruff' 
    g = Gruff::Pie.new 
    g.title = "Percentages of Fees" 
    g.data 'Management Fees', mf_percent 
    g.data 'Other Fees', of_percent 
    file_name = 'app/assets/images/pie_charts/portfolio_' + @portfolio.id.to_s + '.png' 
    g.write(file_name) 
end 

這裏是視圖:

<%= file_name = 'pie_charts/portfolio_' + @portfolio.id.to_s + '.png' %> 
<%= image_tag(file_name, height: 300) %> 

現在,它的工作原理上的發展,而不是在生產。

製作HTML:

pie_charts/portfolio_3.png 
<img height="300" src="/images/pie_charts/portfolio_3.png" alt="Portfolio 3"> 

開發HTML

pie_charts/portfolio_3.png 
<img height="300" src="/assets/pie_charts/portfolio_3-8ea1d8e07ae40e233bd7366c24bc657795b6fba09095335ca0211cef72a07d3a.png" alt="Portfolio 3 8ea1d8e07ae40e233bd7366c24bc657795b6fba09095335ca0211cef72a07d3a"> 

試圖改變file_name到:

file_name = "public/images/pie_charts/portfolio_" + @portfolio.id.to_s + '.png' 

,並得到這個錯誤:

F, [2015-08-29T02:09:19.026907 #92497] FATAL -- : 
Magick::ImageMagickError (WriteBlob Failed `public/images/pie_charts/portfolio_3.png' @ error/png.c/MagickPNGErrorHandler/1630): 
app/controllers/portfolios_controller.rb:42:in `show' 

回答

1

爲了生產,您必須將其寫入public文件夾。

def show 
    require 'gruff' 
    g = Gruff::Pie.new 
    g.title = "Percentages of Fees" 
    g.data 'Management Fees', mf_percent 
    g.data 'Other Fees', of_percent 
    file_name = "#{Rails.root}/public/images/pie_charts/portfolio_" + @portfolio.id.to_s + '.png' 
    g.write(file_name) 
end 

在生產環境中,Rails的主資源文件夾是公開的。所有的app/assetsvendor/assets資產編譯生產放在public/assets

+0

林現在有錯誤...'Magick :: ImageMagickError(WriteBlob Failed'任何想法? –

+0

顯示完整的錯誤跟蹤,請,並儘量省略'軌。從''公共/ images/pie_charts/portfolio_「 –

+0

更新了問題 –

相關問題