2015-08-29 28 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

更新了问题 –

相关问题