背景图片未在我的视图页面中上传。显示此错误。
ActionController :: RoutingError(没有路由匹配[GET]“/assets/images/control_top.png”)
我该怎么做才能解决这个问题?
答案 0 :(得分:23)
在生产环境中,Rails不负责提供静态资产。因此,您收到此错误。
这由您的应用程序中的config / environment / production.rb中的此设置控制:
config.serve_static_assets = false
您可以设置为 true
或试试这个
rake assets:precompile
命令(从app / assets编译和复制图像,css和js到public /.
答案 1 :(得分:21)
如果你升级到Rails的新版本(Rails 4和Rails 3.2.16),你突然开始看到这个错误,你的样式表可能指向非指纹,非缓存版本的文件。如果您正在使用资产管道,为了利用它,您需要使用指向文档的指纹缓存版本的新助手。为此,您需要在您的css文件中嵌入erb,或者使用sass。
不正确(使用sass):
.class
background: url('asset.png') no-repeat
正确(使用sass):
.class
background: image-url('asset.png') no-repeat
有关详细信息,请参阅此处:http://guides.rubyonrails.org/asset_pipeline.html#coding-links-to-assets
答案 2 :(得分:7)
可以帮助别人,我尝试了所有的答案,忘记了最基本的事情。清除浏览器缓存,完成后我很高兴:)
答案 3 :(得分:6)
你必须运行这个命令
rake assets:precompile
答案 4 :(得分:1)
我一直在使用资产管道,但必须更改我使用的硬编码网址(对于我的开发环境):
我更新了我的/config/application.rb以使用资产管道:
config.assets.enabled = true
我将所有图片网址都更改为“/assets/image_without_old_image_directory_name.jpg”
所以例如我的图像曾经在/public/images/xxx.jpg中。我把它们移到/app/assets/images/xxx.jpg。我将img src从/images/xxx.jpg更改为/assets/xxx.jpg
我最终不需要进行资产预编译,只是删除/ public和/ tmp中资产管道的所有可见方面,它只是起作用(用于开发)。