我在本地控制台中检查此命令Rails.application.assets
是否有效,但在heroku控制台中它返回Nil
。
但是当我回滚使用sprockets-rails 2.3.3并在heroku控制台中检查Rails.application.assets
时它会返回值。
发生了什么事?
答案 0 :(得分:3)
这是sprockets-rails 3更改的结果。请参阅问题https://github.com/rails/sprockets-rails/issues/237
您现在可以通过在/config/environments/production.rb中设置config.assets.compile = true
来解决此问题
答案 1 :(得分:0)
您可能需要更改部分代码以与sprockets-rails 3兼容,请阅读https://github.com/rails/sprockets/blob/master/UPGRADING.md
答案 2 :(得分:0)
我通过添加这样的应用程序助手来解决了这个问题:
$oldarray
然后我可以通过查找路径并运行
来检查图像是否存在def image_exists?(path)
if Rails.env == "development" && Rails.application.assets.find_asset(path)
return true
elsif Rails.env == "production" && Rails.application.assets_manifest.assets[path]
return true
else
return false
end
end
在我的应用中,通常路径仅是图像文件名,除非图像位于图像目录内的子文件夹中。